它的發生,是由於某些DOM操做發生在DOM樹加載完成以前,好比appendChild
就像下面的代碼:
<html>
<head>
</head>
<body>
<div>
<script type="text/javascript">
alert(document.readyState);
var oDiv = document.createElement("DIV");
oDiv.innerHTML = 'test odiv test odiv';
document.body.appendChild(oDiv);
</script>
</div>
</body>
</html>
當 解析到DIV時就開始在BODY上appendChild,而這個時候BODY是尚未徹底就緒的(It is not fully loaded),文檔結構仍在loading和interactive狀態之間,因而,便會獲得上述錯誤。固然,該錯誤目前已確切知道的會存在於IE6和 IE7兩個版本中(低於IE6的未進行測試),在IE8中將會獲得一個HTML解析錯誤:HTML Parsing Error: Unable to modify the parent container element before the child element is closed (KB927917)
1.要解決這個問題,能夠進行document.readyState狀態判斷,當它爲complete時再進行相應的操做,或者給script標籤加上defer屬性(該屬性在IE8中已不獲支持)。
javascript
2.或者
html
js中加入了 setTimeout("XXXX()",1000);,使其得到足夠的加載時間後執行目標(XXXX)的function,因而問題獲得解決 java