这是情况。我有一些看起来像这样的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?