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

它的发生,是因为某些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 fullyloaded),文档结构仍在loading和interactive状态之间,于是,便会得到上述错误。当然,该错误目前已确切知道的会存在于IE6和IE7两个版本中(低于IE6的未进行测试),在IE8中将会得到一个HTML解析错误:HTML Parsing Error: Unable tomodify 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,于是问题得到解决



说 明

这个属性是只读的,传回值有以下的可能:

0-UNINITIALIZED:XML 对象被产生,但没有任何文件被加载。
1-LOADING:加载程序进行中,但文件尚未开始解析。
2-LOADED:部分的文件已经加载且进行解析,但对象模型尚未生效。
3-INTERACTIVE:仅对已加载的部分文件有效,在此情况下,对象模型是有效但只读的。
4-COMPLETED:文件已完全加载,代表加载成功。
 
 
范 例
alert("The readyState property is " + xmlDoc.readyState);


document.readyState几种状态及示例 - gaoyusi - My code life < scriptlanguage = " javascript " >
document.readyState几种状态及示例 - gaoyusi - My code life
document.readyState几种状态及示例 - gaoyusi - My code life if (document.readyState == " complete " )
document.readyState几种状态及示例 - gaoyusi - My code life {
document.readyState几种状态及示例 - gaoyusi - My code lifeAdjustImageSize();
document.readyState几种状态及示例 - gaoyusi - My code life}
document.readyState几种状态及示例 - gaoyusi - My code life else
document.readyState几种状态及示例 - gaoyusi - My code life {
document.readyState几种状态及示例 - gaoyusi - My code lifedocument.onreadystatechange=function()
document.readyState几种状态及示例 - gaoyusi - My code life{
document.readyState几种状态及示例 - gaoyusi - My code life
document.readyState几种状态及示例 - gaoyusi - My code lifeif(document.readyState=="complete")
document.readyState几种状态及示例 - gaoyusi - My code life{
document.readyState几种状态及示例 - gaoyusi - My code lifeAdjustImageSize();
document.readyState几种状态及示例 - gaoyusi - My code life}
document.readyState几种状态及示例 - gaoyusi - My code life}
document.readyState几种状态及示例 - gaoyusi - My code life}
document.readyState几种状态及示例 - gaoyusi - My code life
document.readyState几种状态及示例 - gaoyusi - My code life function AdjustImageSize()
document.readyState几种状态及示例 - gaoyusi - My code life {
document.readyState几种状态及示例 - gaoyusi - My code lifevarimageWidth=document.all["SendPic"].width;
document.readyState几种状态及示例 - gaoyusi - My code lifevarimageHeight=document.all["SendPic"].height;
document.readyState几种状态及示例 - gaoyusi - My code life
document.readyState几种状态及示例 - gaoyusi - My code lifeif(imageWidth==0&&imageHeight==0)
document.readyState几种状态及示例 - gaoyusi - My code life{
document.readyState几种状态及示例 - gaoyusi - My code lifedocument.write("图片下载失败,请刷新!");
document.readyState几种状态及示例 - gaoyusi - My code lifereturn;
document.readyState几种状态及示例 - gaoyusi - My code life}
document.readyState几种状态及示例 - gaoyusi - My code life
document.readyState几种状态及示例 - gaoyusi - My code lifeif(imageWidth>160||imageHeight>160)
document.readyState几种状态及示例 - gaoyusi - My code life{
document.readyState几种状态及示例 - gaoyusi - My code lifeif(imageWidth>imageHeight)
document.readyState几种状态及示例 - gaoyusi - My code life{
document.readyState几种状态及示例 - gaoyusi - My code lifek=160/imageWidth;
document.readyState几种状态及示例 - gaoyusi - My code lifeimageHeight=imageHeight*k;
document.readyState几种状态及示例 - gaoyusi - My code lifeimageWidth=160;
document.readyState几种状态及示例 - gaoyusi - My code life}
document.readyState几种状态及示例 - gaoyusi - My code lifeelse
document.readyState几种状态及示例 - gaoyusi - My code life{
document.readyState几种状态及示例 - gaoyusi - My code lifek=160/imageHeight;
document.readyState几种状态及示例 - gaoyusi - My code lifeimageWidth=imageWidth*k;
document.readyState几种状态及示例 - gaoyusi - My code lifeimageHeight=160;
document.readyState几种状态及示例 - gaoyusi - My code life}
document.readyState几种状态及示例 - gaoyusi - My code life
document.readyState几种状态及示例 - gaoyusi - My code lifedocument.all["ImgResized"].value="1";
document.readyState几种状态及示例 - gaoyusi - My code life}
document.readyState几种状态及示例 - gaoyusi - My code life
document.readyState几种状态及示例 - gaoyusi - My code lifedocument.all["SendPic"].width=imageWidth;
document.readyState几种状态及示例 - gaoyusi - My code lifedocument.all["SendPic"].height=imageHeight;
document.readyState几种状态及示例 - gaoyusi - My code life
document.readyState几种状态及示例 - gaoyusi - My code lifedocument.all["ImgWidth"].value=imageWidth;
document.readyState几种状态及示例 - gaoyusi - My code lifedocument.all["ImgHeight"].value=imageHeight;
document.readyState几种状态及示例 - gaoyusi - My code life}
document.readyState几种状态及示例 - gaoyusi - My code life </ script >


function showMessage() {
if (document.readyState == "complete")
{
art.dialog.alert('Yeah~~,This is BackGround Dialog!');
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值