我有一个转换函数,它有一个覆盖屏幕,上面写着“加载”。
SM.prototype.changeScene = function(sceneName){
$("#Loading").removeClass("hide");
$("#loading_curtain").removeClass("offscreen");
$("#acrcurtain").removeClass("offscreen");
$(".loading_text").removeClass("offscreen");
var changeMe = function(){
//lots of loading code (2-5 seconds)
};
window.setTimeout(changeMe, 100);
}这在setTimeout设置为至少100的情况下工作得很好。如果它被移除或更少,加载屏幕就不会显示。类被正确地移除,但它没有显示在屏幕上。有什么原因可以帮助它出现吗?
发布于 2014-02-14 18:35:21
在浏览器中运行的JavaScript不会在更改元素时立即在屏幕上重新绘制元素。它通常要等到没有更多的JavaScript代码运行。
这就是为什么超时允许它重新绘制,以及为什么没有它它不会立即重绘。
在超时之后,正在执行的JavaScript的当前位结束,然后浏览器有机会在“大量加载代码”运行之前重新绘制。
在没有超时的情况下,JavaScript代码仍在积极运行,因此浏览器等待直到完成。
https://stackoverflow.com/questions/21786894
复制相似问题