2
我想在Javascript循环中强制重绘。例如:在Javascript循环中强制重绘
var s = document.getElementById("foo");
for (var i = 0; i < 10000; i++)
s.innerText = i + " times";
更新结束,但我想观察每个中间步骤。解决这个问题的普遍反应是使用setTimeout
,但是,有三个方面的原因是不可接受的:在页面上
- 还有其他的按钮/链接等,而重要的是,这些都不可以点击而循环运行。
- 在循环结束时,我想显示一个弹出窗口,如果超时触发,则标准弹出窗口阻止程序将隐藏它,因为它不再由用户启动。
- 如果用户在循环运行时单击,我希望该点击被缓存直到循环完成,而不是通过循环中途开启。
有没有办法强制浏览器重画?
>在循环结束时,我想显示一个弹出窗口,如果超时被触发,标准弹出窗口阻止程序将隐藏它,因为它不再由用户启动。 我不太确定这一点。我从来没有使用settimeout window.open弹出窗口,但几乎每次浏览器停止弹出 – Sebas
如果弹出窗口直接响应用户操作(即单击)打开,那么它通常是允许的。如果您是以其他方式回应而启动它,那么通常会被禁止。 –
*“有没有办法强制浏览器重画?”*我不这么认为。 'setTimeout'的第一个和第三个问题似乎是可以解决的。不确定第二个。 – 2012-06-01 20:26:59