不同响应IE-8和FF的getElementById()
-
22-09-2019 - |
题
我有一个函数什么执行以下操作
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没有显示任何更新,直到返回控制线程到浏览器。要警惕的调用将做到这一点(对用户的动作脚本等待)。
要么不依赖于可见的用户界面的变化,而你必须执行线程,或者做类似使用计时器后继续返回执行线程脚本的第二部分(简单)。
不隶属于 StackOverflow