我正在使用innerHTML
属性动态修改DIV
,以报告需要几秒钟才能完成的过程。问题是在Firefox上,在脚本完成之前,页面实际上并未重新呈现以反映该更改。这使得应用程序感觉迟钝。有没有办法确保即使运行更多脚本,HTML的更改也会立即显示?
答案 0 :(得分:14)
浏览器是单线程的。在脚本运行时,浏览器无法执行任何其他操作。如果你想做一个像进度表这样的东西,你必须使用setTimeout()
或setInterval()
,并将你的任务分解成一个间隔运行的较小的块。这会在脚本运行之间留下空白,从而将控制权交还给浏览器,浏览器可以重新绘制。
答案 1 :(得分:6)
尝试定期中断脚本。你应该可以使用
setTimeout(nextFunction, 0);
在没有长时间延迟的情况下提供必要的中断,其中nextFunction是继续进行冗长处理的函数。