出现此问题可能是因为在IE下,在加载文档的过程中,整个HTML文档的DOM结构尚未生成完整,而此时正在执行的JS就已创建出新的DOM结点了,致使DOM树的结构发生紊乱。我的问题出现在后台代码部分。
Jquery代码:
1 function UpdateItem(urlStr) { 2 var url = "url:" + urlStr; 3 OpenIframe("修改", "300", "250", url); 4 } 5 6 function OpenIframe(sTitle, sWidth, sHeight, sContent) { 7 if (sWidth == "") sWidth = ‘auto‘; 8 if (sHeight == "") sHeight = ‘auto‘; 9 $.dialog({ 10 id: "iframe1", 11 lock: true, 12 title: sTitle, 13 width: sWidth, 14 height: sHeight, 15 content: sContent 16 }); 17 }
C#代码:
1 string jsStr = "<script>UpdateItem(‘TaxGroupTaxSettingItemPage.aspx?RecordID=" + OpID + "‘);</script>"; 2 Page.ClientScript.RegisterStartupScript(typeof(Page), Guid.NewGuid().ToString(), jsStr);
由于OpenIframe方法改变了DOM结构所以出现了此问题,解决方法是调用JavaScript时加上defer属性,改变后如下:
1 string jsStr = "<script defer=‘defer‘>CreateItem(‘TaxGroupTaxSettingItemPage.aspx?RecordID=" + OpID + "‘);</script>"; 2 Page.ClientScript.RegisterStartupScript(typeof(Page), Guid.NewGuid().ToString(), jsStr);
其他方法(未验证):
1.加入setTimeout来解决。即在调用改变DOM的操作时先判断document.readyState=="complete" ?
若为否,则setTimeout设置为若干秒之后进行该操作。
2.使用doScroll 进行判断DOM是否准备完毕
时间: 2024-10-25 21:25:19