在IE10中,getComputedTextLength会抛出一个错误。

3

我正在编写一个单元测试,使用了getComputedTextLength()方法,在除IE浏览器(我使用的是IE10)以外的所有浏览器中都通过了测试。

有什么建议吗?

这是我得到的错误信息:Unexpected call to method or property access.

4个回答

3
你可以退而调用getBBox()方法,并查看IE10的结果中的width字段。虽然不完全相同,但总比没有好。

1
是的...它们不一样 :) 但它能解决问题。找出IE为什么对getComputedTextLength()感到困扰会很好。 - rinchik

3

当元素不在可见的DOM中时,会出现这种情况。您可以事先进行检查,避免使用try/catch。

if(!document.body.contains(self.node())) return;


1
在我的有限调查中,似乎IE11(因此我认为IE10也是)在实际元素不可见时会抛出此错误。为了解决这个问题,我做了...
var a;
try{
     a=textElement_.getComputedTextLength();
}catch(e){
    a=textElement_.childNodes[0].length*8; //I used 8 as a width, but you should experiment
}

我希望这可以帮到你。一旦元素可见,它似乎会正常使用getComputedTextLength。

0
如果您在iframe中的SVG中调用“el.getSubStringLength()”,然后刷新此iframe,则IE也会抱怨,但是刷新整个页面将完全正常工作。
我猜这是因为文本元素已经在DOM中,而这些更新工作者之间存在错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接