无法执行“ getTotalLength”

问题描述

我正在使用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引擎)。

但是检查出解决链接问题的拉取请求,似乎确实在元素不可见时发生此错误,因为只有当绘制了与该元素相关联的工件时,长度才可以计算。

可以通过检查元素的任何节点是否具有offsetWidthoffsetHeight或边界框({​​{1}})来测试可见性。