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
代码
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
相关文章推荐
- javascript IE下不能用 trim函数解决方法
- javascript Firefox与IE 替换节点的方法
- The name 'xxx' does not exist in the current context 錯誤解決方法之一
- JAVASCRIPT的一些属性和方法的记录 基本都是适合IE的 遍历元素
- IE不能直接顯示PDF的原因分析和解決方法
- JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结 【转】http://blog.csdn.net/uniqer/article/details/7789104
- javascript 用Activex方法调用数据库中的数据,只可用于IE
- JavaScript js 兼容浏览器问题 兼容FireFox(FF)、IE的解决方法
- Javascript 判断浏览器是否为IE的最短方法
- 一個編譯小錯誤和解決方法 &n…
- 【JavaScript】修正IE下document.getElementsByName无法获取DIV标签,兼容IE FF的ByName方法
- 让firefox支持IE的一些方法的javascript扩展函数代码
- javascript FF下因换行空白引起的第一个节点元素和IE不一致的解决方法~
- 解决IE里无法运行JavaScript脚本的方法
- IE中调试javascript的方法
- javascript firefox兼容ie的dom方法脚本
- 用 javascript 修复 IE 下 PNG 图片不能透明显示的方法
- 我是菜鸟之--关于在Firefox与IE中捕捉回车事件的JavaScript方法