getComputedTextLength在IE10中抛出错误

时间:2013-10-01 17:53:25

标签: javascript internet-explorer svg d3.js

我正在编写一个使用getComputedTextLength()的单元测试,并在IE以外的所有浏览器中测试传递(我正在使用IE10)。

有什么想法吗?

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

4 个答案:

答案 0 :(得分:3)

您可以回退调用getBBox()并查看IE10结果的宽度字段。它不完全相同,但它比我想的更好。

答案 1 :(得分:3)

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



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




答案 2 :(得分: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。

答案 3 :(得分:0)

如果您在iframe中的SVG中调用“el.getSubStringLength()”。然后你刷新这个iframe,IE也会抱怨这个,但刷新整个页面就可以了。

我想这是因为text元素已经存在于DOM中,并且这些更新工作者之间存在一个错误。