3

我正在尝试为我的框架创建一个方法,该方法将对元素内的文本执行某些操作,但在 FF 和 IE 中存在问题。

<div id="myDiv" style="border: 1px solid red;">
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas suscipit lacus non hendrerit cursus.
</div>

<script>
    console.log(document.getElementById('myDiv').hasOwnProperty("innerHTML"));
</script>

这在 FF 和 IE 中返回 false。虽然它在 Chrome 中返回 true。想法为什么会这样?

4

1 回答 1

3

从 Chrome 43 开始,根据规范,该innerHTML属性处于启用状态Element.prototype(作为 getter/setter 对),而不是在元素实例上。Firefox 和 IE 正确实施规范。Chrome 违反了规范,因为他们声称如果将其放在原型上,从 JS 到 C++ 的调用会更慢(尽管实际上,对于 DOM 属性 getter,SpiderMonkey 设法使调用比 V8 更快)。

有关此更改的更多信息,请参阅:https ://developers.google.com/web/updates/2015/04/DOM-attributes-now-on-the-prototype?hl=en

于 2013-10-06T04:32:07.047 回答