原文链接:http://www.cnblogs.com/acker/archive/2011/07/27/2117927.html
我采用第二种方式解决补充一点,可以在 window.οnlοad=setTimeOut("fangfa()",1000);
也可以 用SetInterval,循环判断document.readyState=="完成" 满足条件后执行方法,停止SetInterval
定义计时器 var timer = window.setInterval("fs()",1000);取消计时器 clearInterval(timer)
一、
又涨见识了
IE8报下面错误,而且是我的机器不报,同事的机器报,试了4台,两个报,两个不报,IE版本都一样,没想明白
解决:
1、查看是否有未关闭的html标签,比如<table>而没有</table> (我就是这个原因)
2、是否在页面未加载完前js代码操作了body里的元素,将相关js代码移到</body>后面
二、
它的发生,是因为某些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中已不获支持)。
2.或者
js中加入了 setTimeout("XXXX()",1000);,使其获得足够的加载时间后执行目标(XXXX)的function,于是问题得到解决