问题描述
我正在使用JS生成嵌入式SVG。我使用getTotalLength()
计算一些stroke-dasharray
的值来为折线制作动画。
每当我第一次执行draw()
函数时,这一切都很好。但是,当我第二次执行相同的功能以添加一些附加的折线时,它不起作用。相反,它抛出:
Error: Failed to execute 'getTotalLength' on 'SVGGeometryElement': This element is non-rendered element.
现有的stackoverflow帖子与此问题不符。
谢谢您的帮助。
使用:最新的Chrome版本和简单的JS。
解决方法
您是否正在使用UIkit?看看this Github issue。
编辑
似乎它不是我最初想的那样特定于UIkit(错误消息的语法看起来不像是来自JS引擎)。
但是检查出解决链接问题的拉取请求,似乎确实在元素不可见时发生此错误,因为只有当绘制了与该元素相关联的工件时,长度才可以计算。
可以通过检查元素的任何节点是否具有offsetWidth
,offsetHeight
或边界框({{1}})来测试可见性。