Firefox 不同响应IE-8和FF getElementById()

Firefox 不同响应IE-8和FF getElementById(),firefox,internet-explorer,behavior,getelementbyid,Firefox,Internet Explorer,Behavior,Getelementbyid,我有一个函数,下面是什么 function test() { document.getElementById("main").innerHTML="show wait"; // do stuff document.getElementById("main").innerHTML="show finished"; } 在FF中,div将显示“show wait”,执行其他操作4秒钟,然后 然后显示“显示完成” 在IE中,它只显示“show finished”。如果我将

我有一个函数,下面是什么

function test() {
    document.getElementById("main").innerHTML="show wait";

    // do stuff

    document.getElementById("main").innerHTML="show finished";
}
在FF中,div将显示“show wait”,执行其他操作4秒钟,然后 然后显示“显示完成”

在IE中,它只显示“show finished”。如果我将alert()放在“do stuff”之后或之前,它将显示“show wait”


我能做些什么来解决它,我知道我可以拆分函数,还有其他解决方案吗?

IE不会显示任何更新,直到您将控制线程返回到浏览器。调用alert将执行此操作(脚本等待用户操作)


执行线程时不要依赖可见的UI更改,或者在返回执行线程后(短暂地)使用计时器继续执行脚本的第二部分。

阅读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”
文本