这是情况。我有一些类似于这样的javascript代码:
function onSubmit() {
doSomeStuff();
someSpan.style.display="block";
otherSpan.style.display="none";
return doLongRunningOperation;
}
当我将此设置为表单提交操作并在非IE浏览器中运行时,它会迅速交换两个span的可见性并运行长时间的javascript操作。如果我在IE中执行此操作,则直到onSubmit()完全返回后才进行交换。
我可以通过添加一个alert框来强制进行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?