我正在编写一个使用getComputedTextLength()的单元测试,并在IE以外的所有浏览器中测试传递(我正在使用IE10)。
有什么想法吗?
这是我得到的错误:Unexpected call to method or property access.
答案 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中,并且这些更新工作者之间存在一个错误。