我正在尝试为我的框架创建一个方法,该方法将对元素中的文本执行某些操作,但在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。想法为什么会这样?
答案 0 :(得分:2)
从Chrome 43开始,根据规范,innerHTML
属性位于Element.prototype
(作为getter / setter对),而不是元素实例。 Firefox和IE正确实现了规范。 Chrome违反了规范,因为他们声称从JS到C ++的调用如果将它放在原型上会更慢(尽管在实践中,SpiderMonkey设法使得调用比V8更快地用于DOM属性获取者)。
有关此更改的详细信息,请参阅:https://developers.google.com/web/updates/2015/04/DOM-attributes-now-on-the-prototype?hl=en