我有一些JavaScript代码,在IE中包含以下内容:

myElement.innerText = "foo";

然而,'innerText'属性似乎在Firefox中不起作用。Firefox中有类似的吗?或者是否可以使用更通用的跨浏览器属性?


当前回答

从2016年的Firefox v45开始,innerText在Firefox上工作,看看它的支持:http://caniuse.com/#search=innerText

如果希望它能在以前版本的Firefox上运行,可以使用textContent,它在Firefox上有更好的支持,但在较旧的IE版本上更差:http://caniuse.com/#search=textContent

其他回答

Firefox使用w3c兼容的textContent属性。

我猜Safari和Opera也支持这个属性。

从2016年的Firefox v45开始,innerText在Firefox上工作,看看它的支持:http://caniuse.com/#search=innerText

如果希望它能在以前版本的Firefox上运行,可以使用textContent,它在Firefox上有更好的支持,但在较旧的IE版本上更差:http://caniuse.com/#search=textContent

只是从原帖子下的评论中转发。innerHTML适用于所有浏览器。谢谢stefita。

myElement。innerHTML = "foo";

在这里找到这个:

<!--[if lte IE 8]>
    <script type="text/javascript">
        if (Object.defineProperty && Object.getOwnPropertyDescriptor &&
            !Object.getOwnPropertyDescriptor(Element.prototype, "textContent").get)
          (function() {
            var innerText = Object.getOwnPropertyDescriptor(Element.prototype, "innerText");
            Object.defineProperty(Element.prototype, "textContent",
              { // It won't work if you just drop in innerText.get
                // and innerText.set or the whole descriptor.
                get : function() {
                  return innerText.get.call(this)
                },
                set : function(x) {
                  return innerText.set.call(this, x)
                }
              }
            );
          })();
    </script>
<![endif]-->

如果您只需要设置文本内容而不需要检索,这里有一个简单的DOM版本,您可以在任何浏览器上使用;它既不需要IE的innerText扩展,也不需要DOM Level 3 Core textContent属性。

function setTextContent(element, text) {
    while (element.firstChild!==null)
        element.removeChild(element.firstChild); // remove all existing content
    element.appendChild(document.createTextNode(text));
}