“innerText”在IE中工作,但在Firefox中不起作用
我有一些在IE中工作的JavaScript代码,其中包含以下内容:
myElement.innerText = "foo";
但是,似乎“innerText”属性在Firefox中不起作用。有没有一些火狐的等价物?或者是否有可以使用更通用的跨浏览器属性?
我有一些在IE中工作的JavaScript代码,其中包含以下内容:
myElement.innerText = "foo";
但是,似乎“innerText”属性在Firefox中不起作用。有没有一些火狐的等价物?或者是否有可以使用更通用的跨浏览器属性?
更新:我写了一篇博客文章,详细介绍了所有差异。
Firefox使用W3C标准,但其行为与MSHTML专有的行为“略有不同”(前段时间,Opera也在数十个其他MSHTML功能中复制)。Node::textContent
innerText
首先,空格表示与一个不同。其次,更重要的是,它包含所有 SCRIPT 标记内容,而 innerText 则不包含。textContent
innerText
textContent
为了使事情更具娱乐性,Opera - 除了实现标准 - 决定也添加MSHTML,但将其更改为充当textContent
- 即包括SCRIPT内容(实际上,在Opera中似乎产生相同的结果,可能只是彼此别名)。textContent
innerText
textContent
innerText
textContent
是接口的一部分,而 是 的一部分。例如,这意味着您可以“检索”,但不能从文本节点中检索:Node
innerText
HTMLElement
textContent
innerText
var el = document.createElement('p');
var textNode = document.createTextNode('x');
el.textContent; // ""
el.innerText; // ""
textNode.textContent; // "x"
textNode.innerText; // undefined
最后,Safari 2.x也有错误的实现。在 Safari 浏览器中,仅当元素既不隐藏(通过)也不从文档中孤立时,才能正常运行。否则,将生成空字符串。innerText
innerText
style.display == "none"
innerText
我一直在玩抽象(以解决这些缺陷),但事实证明它相当复杂。textContent
您最好的选择是首先定义您的确切要求,然后从那里开始。通常可以简单地从元素上剥离标签,而不是处理所有可能的/偏差。innerHTML
textContent
innerText
当然,另一种可能性是遍历 DOM 树并以递归方式收集文本节点。