我有一个功能如下
function test() {
document.getElementById("main").innerHTML="show wait";
// do stuff
document.getElementById("main").innerHTML="show finished";
}
在FF中,div将显示“show wait”,执行其他操作4秒钟 然后显示“show finished”
在IE中它只会显示“show finished”。如果我在“做东西”之后或之前发出警告(),它将显示“显示等待”。
我能做些什么来解决它,我知道我可以拆分功能,还有其他任何解决方案吗?
答案 0 :(得分:2)
阅读理查德的解释,说明为什么它不起作用。至于解决方案, 快速破解:
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"
文本可以画在屏幕上。
答案 1 :(得分:1)
在将控制线程返回给浏览器之前,IE不会显示任何更新。对警报的调用将执行此操作(您的脚本等待用户操作)。
当你拥有执行线程时,要么不依赖于可见的UI更改,要么在(简要地)返回执行线程之后执行诸如使用计时器继续脚本的第二部分之类的事情。