function OpenWindow(anchor) {
var toUsername = anchor.innerText;
window.open("ChatWindow.aspx?username=" + toUsername,'_blank', "width=340,height=200");
}
这个函数在firefox中打开一个参数为undefined的页面,在google chrome中我获得了正确的值。
Firefox网址: http://localhost:9452/ChatWindow.aspx?username=undefined
这个问题的解决方案是什么?
答案 0 :(得分:14)
虽然innerText
是非标准的,但它与textContent
显着不同,因为第一个正在进行漂亮打印(例如,<br/>
转换为新的一行),而第二个 - 不是。
所以,虽然常识是使用:
var toUsername = anchor.innerText || anchor.textContent;
或某种包装器,只使用jQuery的.text
或其使用的其他库中的模拟器可能更聪明。
答案 1 :(得分:2)
尝试使用以下内容更改anchor.innerText
anchor.textContent
这可以在所有浏览器中使用。
另见:'innerText' works in IE, but not in Firefox
P.S。我真的建议使用JQuery来避免这些问题,并确保始终完全编写跨浏览器的JavaScript。
答案 2 :(得分:2)
innerText
是Microsoft的发明,而textContent
是W3C标准。
function OpenWindow(anchor) {
var toUsername = anchor.textContent || anchor.innerText || '';
window.open("ChatWindow.aspx?username=" + toUsername,'_blank', "width=340,height=200");
}
这应该有效。 MooTools或其他一些JavaScript框架应该能够帮助解决跨浏览器的不一致问题。
答案 3 :(得分:1)
对innerText使用textContent。 示例
<script>
function change()
{
document.getElementById("label").textContent="Hello";
}
</script>
它适用于ff。和铬也。但不适用于IE。
答案 4 :(得分:1)
我遇到了同样的问题,因为Firefox不支持innerText属性,而是支持textContent属性。因此请检查浏览器的功能支持,以便相应地使用正确的属性。
if(document.all){
document.getElementById('element').innerText = "myText";
} else{
document.getElementById('element').textContent = "myText";
}
或者最好使用Jquery来解决跨浏览器问题。 用法:
$('element').text("myText");