2
由於某些原因,如註釋中所述,以下代碼在IE 8中無法正常工作。我試圖給文檔對象添加一個「writeSpecial」方法,並且這種方法在第一次被調用時工作得很好,但是當這被稱爲隨後的時間時,它就變成了未定義的。在IE8中向文檔對象添加自定義方法爲'未定義'
但是,這隻發生在IE中,當我使用onload事件。內聯主體onload和window.attachEvent('onload',main);之間似乎沒有區別。如果我直接從腳本塊調用main(),它可以正常工作。再次,這只是在IE中。
會有人碰巧知道這是爲什麼嗎?
謝謝!
<html>
<head>
<title>Test</title>
<script type="text/javascript">
document.writeSpecial = function(str)
{
this.write(str + " [specialfied]");
}
function main()
{
alert(document.writeSpecial);
document.writeSpecial('test 1');
alert(document.writeSpecial); //document.writeSpecial is undefined here in IE, works in firefox...why?
document.writeSpecial('test 2');
}
</script>
</head>
<body onload="main()">
</body>
</html>
一個可能的解決方法(雖然我不知道它是否會工作):不要使用document.write。改用'[body] .innerHTML + ='。 – MatrixFrog 2010-07-24 04:15:11
它會工作,但我不確定writeSpecial()應該做什麼,所以我不確定哪個更好的解決方案。 – qw3n 2010-07-24 05:41:22
感謝您的迴應:)。 這只是一個簡單的例子,從上下文中取出來說明我所觀察到的。出於所有的實際目的,我可以通過幾種不同的方式解決這個問題。我主要對這種行爲的解釋感興趣。 – Lonimor 2010-07-24 06:30:21