您的位置:首页 > Web前端 > HTML

IE 8 HTML Parsing Error:Unable to modify the parent container element before the child element is cl

2012-07-19 17:11 381 查看

IE 8 HTML Parsing Error:Unable to modify the parent container element before the child element is closed

2011-01-24 09:14:43| 分类:

JavaScript
| 标签:ie 8 html parsing error
|字号大中小 订阅

一、

又涨见识了

IE8报下面错误,而且是我的机器不报,同事的机器报,试了4台,两个报,两个不报,IE版本都一样,没想明白

解决:

1、查看是否有未关闭的html标签,比如<table>而没有</table> (我就是这个原因)

2、是否在页面未加载完前js代码操作了body里的元素,将相关js代码移到</body>后面

网页错误详细信息

用户代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)

时间戳: Wed, 14 Apr 2010 08:33:56 UTC

消息: HTML Parsing Error: Unable to modify the parent container element before the child element is closed (KB927917)

行: 0

字符: 0

代码: 0

URI:

http://support.microsoft.com/kb/927917

二、

它的发生,是因为某些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,于是问题得到解决
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐