【发布时间】:2010-11-26 17:12:26
【问题描述】:
情况是这样的。我有一些看起来像这样的 javascript:
function onSubmit() {
doSomeStuff();
someSpan.style.display="block";
otherSpan.style.display="none";
return doLongRunningOperation;
}
当我将此作为表单提交操作并从非 IE 浏览器运行时,它会快速交换两个跨度可见性并运行长 javascript 操作。如果我在 IE 中执行此操作,则在 onSubmit() 完全返回之前不会进行交换。
我可以通过像这样粘贴一个警告框来强制重绘 dom:
function onSubmit() {
doSomeStuff();
someSpan.style.display="block";
otherSpan.style.display="none";
alert("refresh forced");
return doLongRunningOperation;
}
另外,明显的 jquery 重构不会影响 IE 的行为:
function onSubmit() {
doSomeStuff();
$("#someSpan").show();
$("#otherSpan").hide();
return doLongRunningOperation;
}
这种行为存在于 IE8 和 IE6 上。在这些浏览器中是否有强制重绘 DOM 的方法?
【问题讨论】:
-
首先,你在 longRunningOperation 中做什么?
-
您是否尝试过将可见性切换移动到它自己的功能?
-
longRunningOperation 正在进行表单验证。在一小部分情况下,表格很大。
标签: javascript internet-explorer dom