我正在尝试为我的框架创建一个方法,该方法将对元素内的文本执行某些操作,但在 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。为什么会这样?

最佳答案

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

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

关于javascript - hasOwnProperty 在 FF 中返回 false,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19203818/

10-12 07:03