3

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

有任何想法吗?

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

4

4 回答 4

3

您可以回退到调用 getBBox() 并查看 IE10 结果的宽度字段。它不完全一样,但我猜总比没有好。

于 2013-10-01T19:01:16.807 回答
3

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

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

于 2015-11-12T13:32:15.813 回答
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 。

于 2014-09-01T12:54:04.257 回答
0

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

我猜这是因为文本元素已经在 DOM 中,并且这些更新工作者之间存在错误。

于 2016-05-27T07:57:23.823 回答