我有一些JavaScript代码,在IE中包含以下内容:
myElement.innerText = "foo";
然而,'innerText'属性似乎在Firefox中不起作用。Firefox中有类似的吗?或者是否可以使用更通用的跨浏览器属性?
我有一些JavaScript代码,在IE中包含以下内容:
myElement.innerText = "foo";
然而,'innerText'属性似乎在Firefox中不起作用。Firefox中有类似的吗?或者是否可以使用更通用的跨浏览器属性?
当前回答
根据Prakash K的回答,Firefox不支持innerText属性。所以你可以简单地测试用户代理是否支持这个属性,并按照下面的步骤进行:
function changeText(elem, changeVal) {
if (typeof elem.textContent !== "undefined") {
elem.textContent = changeVal;
} else {
elem.innerText = changeVal;
}
}
其他回答
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";
也可以在其他浏览器中模拟innerText行为:
if (((typeof window.HTMLElement) !== "undefined") && ((typeof HTMLElement.prototype.__defineGetter__) !== "undefined")) {
HTMLElement.prototype.__defineGetter__("innerText", function () {
if (this.textContent) {
return this.textContent;
} else {
var r = this.ownerDocument.createRange();
r.selectNodeContents(this);
return r.toString();
}
});
HTMLElement.prototype.__defineSetter__("innerText", function (str) {
if (this.textContent) {
this.textContent = str;
} else {
this.innerHTML = str.replace(/&/g, '&').replace(/>/g, '>').replace(/</g, '<').replace(/\n/g, "<br />\n");
}
});
}
根据Prakash K的回答,Firefox不支持innerText属性。所以你可以简单地测试用户代理是否支持这个属性,并按照下面的步骤进行:
function changeText(elem, changeVal) {
if (typeof elem.textContent !== "undefined") {
elem.textContent = changeVal;
} else {
elem.innerText = changeVal;
}
}