带有Firefox innerText问题的Javascript

时间:2011-09-18 12:53:01

标签: javascript firefox

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

这个问题的解决方案是什么?

5 个答案:

答案 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");