在回调窗格更新DOM后,IE不会更新显示

时间:2009-05-06 19:12:15

标签: ajax internet-explorer dom updatepanel callback

我在使用.Net 3.5的ascx页面中有一个更新面板。

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

通常一切都是笨拙的。偶尔DOM会更新,IE不会打扰显示器。整个更新区域似乎是空白的。

一旦用户做了一些会触发刷新的事情,比如调整窗口大小,数据会立即显示在屏幕上,但直到那时才显示。

这是为什么?什么可能导致它?如何解决?

1 个答案:

答案 0 :(得分: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中已知的一个非常烦人的错误了很长一段时间了,虽然我找不到它贴在任何地方。事实上,甚至Opera也不时有这个bug。

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