2

Javascript ループ中に再描画を強制したい。例えば:

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

それは最後に更新されますが、各中間ステップを観察したいと思います。この問題に対する一般的な対応は を使用するsetTimeoutことですが、受け入れられない理由が 3 つあります。

  • ページには他のボタン/リンクなどがあり、ループが動作している間はこれらのどれもクリックできないことが重要です。
  • ループの最後にポップアップを表示したいのですが、タイムアウトが発生した場合、標準のポップアップ ブロッカーはポップアップを非表示にします。これは、ユーザーによって開始されなくなったためです。
  • ループの実行中にユーザーがクリックした場合、ループの途中で発生するのではなく、ループが完了するまでそのクリックをバッファリングする必要があります。

ブラウザを強制的に再描画する方法はありますか?

4

1 に答える 1

1

ただし、これが唯一の解決策であると思います。なぜなら、ブラウザのレンダリングの速度を向上させるための述語として、中間で再描画できないことが重要だからです。

おそらく、発生させたくないクリックイベントで buffer-me フラグを管理できますか? または、dont-buffer-me フラグを言った方がよいでしょう...

お役に立てば幸いです。よろしくお願いします。

于 2012-06-01T20:24:54.647 に答える