2009-05-06 51 views
1

我在使用.net 3.5的ascx页面中有一个更新面板。在callpback窗格更新DOM后IE不更新display

用户输入数据,启动回调,并且ajax更新DOM。

通常情况下所有的都是hunky dory。偶尔DOM得到更新,IE浏览器不打扰刷新显示。整个更新区域显示为空白。

一旦用户执行了一些可以触发刷新的操作(如调整窗口大小),数据即刻显示在屏幕上,但直到此时才显示。

这是为什么?什么可能导致它?它如何被修复?

+0

您看到了哪些版本的IE? – 2009-10-20 22:13:32

回答

2

您可以通过切换到真正的浏览器:)

真的“修复”,你可能能够根据我发现in this page的伎俩来修复它。

基本上,你需要做的就是创建一个空的节点和本地删除你与你的新内容更新DOM后什么:

var t = document.createTextNode('temp text'); 
element.appendChild(t); // Not sure if this is any element 
         // or one inside your new DOM nodes. 
setTimeout(function() { t.parentNode.removeChild(t); }, 0); 

在该页面的作者说:

即使使用我的“修复”,只有当用户将其注模光标移出窗口的 并返回时,才会起作用。

但是我认为这样做很好......我认为IE浏览器可能不会触发刷新,除非在浏览器窗口中有一些活动,以节省处理时间。

这已经是一个很长时间以来在IE浏览器中非常令人讨厌的bug,尽管我找不到它在任何地方发布。事实上,即使Opera不时有这个bug。

此外,即使您使用该技巧解决此问题,请检查每一段HTML是否有效。您可以在http://validator.w3.org中查看。如果某段代码无效,那么你不能责怪浏览器不理解你的意思。