Javascript ループ中に再描画を強制したい。例えば:
var s = document.getElementById("foo");
for (var i = 0; i < 10000; i++)
s.innerText = i + " times";
それは最後に更新されますが、各中間ステップを観察したいと思います。この問題に対する一般的な対応は を使用するsetTimeout
ことですが、受け入れられない理由が 3 つあります。
- ページには他のボタン/リンクなどがあり、ループが動作している間はこれらのどれもクリックできないことが重要です。
- ループの最後にポップアップを表示したいのですが、タイムアウトが発生した場合、標準のポップアップ ブロッカーはポップアップを非表示にします。これは、ユーザーによって開始されなくなったためです。
- ループの実行中にユーザーがクリックした場合、ループの途中で発生するのではなく、ループが完了するまでそのクリックをバッファリングする必要があります。
ブラウザを強制的に再描画する方法はありますか?