2011-09-18 85 views

回答

14

雖然innerText是非標準的,它從顯著textContent不同,因爲第一個被操作的方式漂亮打印(例如,<br/>被轉換爲新的生產線),而第二個 - 不是。

所以,雖然共同的智慧是使用:

var toUsername = anchor.innerText || anchor.textContent; 

或某種包裝的,大概可以更聰明,只是使用jQuery的.text或其類似物與正在使用其他庫。

+1

仍然無法工作 –

+0

它確實爲我工作。謝謝,c69。 – opalenzuela

2

嘗試改變anchor.innerText有:

anchor.textContent 

這個希望工程在所有瀏覽器。

在此還看到:'innerText' works in IE, but not in Firefox

附:我真的推薦使用JQuery來避免這些類型的問題,並確保始終編寫完全跨瀏覽器的JavaScript。

+0

請注意:'textContent'在IE8中不起作用。 –

+0

是的,這就是爲什麼我建議使用JQuery :) –

2

innerText是微軟發明,而textContent是W3C標準。

function OpenWindow(anchor) { 
    var toUsername = anchor.textContent || anchor.innerText || ''; 
    window.open("ChatWindow.aspx?username=" + toUsername,'_blank', "width=340,height=200");  
} 

這應該工作。 MooTools或其他一些JavaScript框架應該能夠幫助解決跨瀏覽器的不一致問題。

+0

MooTools!好的! :) – Andbdrew

1

使用textContent for innerText。 例如

<script> 
function change() 
{ 
    document.getElementById("label").textContent="Hello"; 
} 
</script> 

它將在FF工作。和鉻也。但不適用於IE。

1

我得到同樣的問題,因爲Firefox不支持innerText屬性,而是它支持textContent屬性。因此請檢查瀏覽器的功能支持以相應地使用正確的屬性。

if(document.all){ 
document.getElementById('element').innerText = "myText"; 
} else{ 
document.getElementById('element').textContent = "myText"; 
} 

,或者最好使用jQuery來解決跨瀏覽器的問題。 用法:

$('element').text("myText");