我在使用.Net 3.5的ascx页面中有一个更新面板。
用户输入数据,启动回调,ajax更新DOM。
通常一切都是笨拙的。偶尔DOM会更新,IE不会打扰显示器。整个更新区域似乎是空白的。
一旦用户做了一些会触发刷新的事情,比如调整窗口大小,数据会立即显示在屏幕上,但直到那时才显示。
这是为什么?什么可能导致它?如何解决?
答案 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中查看。如果某段代码无效,那么你不能责怪浏览器不理解你的意思。