我有一个函数什么执行以下操作

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

    // do stuff

    document.getElementById("main").innerHTML="show finished";
}

在FF股利将显示“节目等待”,4秒做其他的东西和 然后显示“显示完成的”

在IE它只会显示“显示完成”。如果我以后还是“做的东西”前加上一个警报(),它会显示“显示等待”。

我能做些什么来解决这个问题,我知道我可以分割功能,任何其他解决办法?

有帮助吗?

解决方案

阅读理查德解释为什么它不工作。作为一种解决方案, 快速劈:

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

    setTimeout(function(){
        // do stuff

        document.getElementById("main").innerHTML="show finished";
    },1)
}

原因这个作品是setTimeout时间表被执行后从而使浏览器退出脚本的执行模式,进入DOM渲染模式,这样"show wait"文本可以被绘制到屏幕上的“做的东西”的代码。

其他提示

IE没有显示任何更新,直到返回控制线程到浏览器。要警惕的调用将做到这一点(对用户的动作脚本等待)。

要么不依赖于可见的用户界面的变化,而你必须执行线程,或者做类似使用计时器后继续返回执行线程脚本的第二部分(简单)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top