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

IE下產生KB927917的javascript錯誤的解決方法.

2010-03-30 09:52 295 查看
最近在寫程式中遇到這樣一個錯誤

代码

var msgw,msgh,bordercolor;
msgw=400;
msgh=100;
titleheight=25
bordercolor=""#336699"";
titlecolor=""#99CCFF"";

var bgObj = document.createElement(""div"");
bgObj.setAttribute(""id"", ""bgDiv"");
bgObj.style.position = ""absolute"";
bgObj.style.top = document.getElementById('" + UpdatePanel1.ClientID + @"').offsetTop + ""px""
bgObj.style.background = ""#777"";
bgObj.style.filter = ""progid:DXImageTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75"";
bgObj.style.opacity = ""0.6"";
bgObj.style.left = document.getElementById('" + UpdatePanel1.ClientID + @"').offsetLeft + ""px""
bgObj.style.width = document.getElementById('" + UpdatePanel1.ClientID + @"').offsetWidth + ""px""
bgObj.style.height = document.getElementById('" + UpdatePanel1.ClientID + @"').offsetHeight + ""px""
bgObj.style.zIndex = ""10000"";
document.getElementById('" + UpdatePanel1.ClientID + @"').appendChild(bgObj);

var msgObj=document.createElement(""div"");
msgObj.setAttribute(""id"",""msgDiv"");
msgObj.setAttribute(""align"",""center"");
msgObj.style.background=""white"";
msgObj.style.border=""1px solid "" + bordercolor;
msgObj.style.position = ""absolute"";
msgObj.style.left = ""50%"";
msgObj.style.top = ""50%"";
msgObj.style.font=""12px/1.6em Verdana, Geneva, Arial, Helvetica, sans-serif"";
msgObj.style.marginLeft = ""-225px"" ;
msgObj.style.marginTop = -75+document.documentElement.scrollTop+""px"";
msgObj.style.width = msgw + ""px"";
msgObj.style.height =msgh + ""px"";
msgObj.style.textAlign = ""center"";
msgObj.style.lineHeight =""25px"";
msgObj.style.zIndex = ""10001"";
document.body.appendChild(msgObj);

var txt=document.createElement(""p"");
txt.style.margin=""1em 0""
txt.setAttribute(""id"",""msgTxt"");
txt.innerHTML=""頁面初始化資料不全,請勿操作!"";
document.getElementById(""msgDiv"").appendChild(txt);

產生錯誤的那句我已經Highlight.初步認為是在Body還沒有處理結束的時候又向裡面加入新的元素導致(It is not fully loaded).

此時document正處於loading與interactive狀態之間

解決方法:

1.先進行document.readyState狀態判斷,當它為complete時再進行相應的操作,或者給script標籤加上defer屬性(該屬性在IE8中已不獲支持)。

jquery裏的$(document).ready(function(){
// 在這裏寫你的代碼...
});

或者

2.javascript中加入了 setTimeout("XXXX()",1000);,使其獲得足夠的載入時間後執行目標(XXXX)的function
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: