在调试cctv7项目小七去哪儿专题html页面时候碰到一个问题就是IE8 中”HTML Parsing Error:Unable to modify the parent container element before the child element is closed”错误,蓝狮注册登陆这个可不太长见到,后来得知这个报错是提示html解析错位,主要有两个主要原因会导致这个情况。
1、查看是否有未关闭的html标签,比如而没有
2、是否在页面未加载完前js代码操作了body里的元素,将相关js代码移到后面
对照这两点仔细排查了一下错位,最终发现问题所在。
把代码so.write(“flash”); 改为so.write(“pc”); 就可以了,如下
网页错误详细信息
用 户代理: 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
就像下面的代码:
当解析到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,于是问题得到解决
来源:http://blog.163.com/xiao_mege/blog/static/72942753201102491443802/
标签:HTML Parsing Error
0 Comments