在Javascript循环期间强制重绘

时间:2012-06-01 20:15:14

标签: javascript html

我想在Javascript循环中强制重绘。例如:

var s = document.getElementById("foo");
for (var i = 0; i < 10000; i++)
    s.innerText = i + " times";

最后更新,但我想观察每个中间步骤。对此问题的常见回应是使用setTimeout,但有三个原因是不可接受的:

  • 页面上还有其他按钮/链接等,重要的是在循环操作时不能单击这些按钮/链接等。
  • 在循环结束时,我想显示一个弹出窗口,如果超时触发,则标准弹出窗口阻止程序将隐藏它,因为它不再由用户启动。
  • 如果用户在循环运行时单击,我希望缓冲点击直到循环完成,而不是在循环中途点击。

有没有办法强制浏览器重新绘制?

1 个答案:

答案 0 :(得分:1)

我担心这是你唯一的解决方案,因为不可重复的中间作为浏览器渲染速度提升的谓词很重要。

也许您可以在那些您不想触发的点击事件中管理缓冲区标志?或者更好地说一个不要缓冲我的旗帜......

我希望它有所帮助,最好的问候。