2

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

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

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

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

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

4

1 回答 1

1

不过,恐怕这是您唯一的解决方案,因为中间不可重绘对于提高浏览器渲染速度的谓词很重要。

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

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

于 2012-06-01T20:24:54.647 回答