我有一个函数,它执行以下操作
function test() {
document.getElementById("main").innerHTML="show wait";
// do stuff
document.getElementById("main").innerHTML="show finished";
}在FF中,div会显示"show wait",做其他的事情4秒钟,然后显示“显示完成”。
在IE中,它将只显示“显示完成”。如果我在“做东西”之后或之前放了一个alert(),它会显示"show wait“。
我可以做什么来解决它,我知道我可以拆分函数,还有其他的解决方案吗?
发布于 2010-01-21 18:07:13
阅读Richard的解释,了解为什么它不起作用。至于解决方案,我有个简单的建议:
function test() {
document.getElementById("main").innerHTML="show wait";
setTimeout(function(){
// do stuff
document.getElementById("main").innerHTML="show finished";
},1)
}这样做的原因是,setTimeout计划稍后执行"do stuff“代码,从而允许浏览器退出脚本执行模式并进入DOM呈现模式,以便可以将"show wait"文本绘制到屏幕上。
发布于 2010-01-21 17:53:30
IE不会显示任何更新,直到您将控制线程返回给浏览器。调用alert就可以做到这一点(您的脚本等待用户操作)。
要么在拥有执行线程时不依赖于可见的UI更改,要么在(短暂地)返回执行线程后使用计时器继续执行脚本的第二部分。
https://stackoverflow.com/questions/2108207
复制相似问题