私はinnerHTML
プロパティを使用してDIV
を動的に修正し、数秒で終了するプロセスを報告します。問題は、Firefox上では、スクリプトが終了するまでその変更が反映されるようにページが実際に再描画されないことです。これは、アプリが低迷して感じさせる。より多くのスクリプトが実行されていても、HTMLへの変更がすぐに表示されるようにする方法はありますか?スクリプトの処理中にブラウザが強制的に再描画されるようにするにはどうすればよいですか?
8
A
答えて
14
ブラウザはシングルスレッドです。スクリプトが実行されている間は、ブラウザは何もできません。進歩率メーターのようなことをしたい場合は、setTimeout()
またはsetInterval()
を使用し、一定間隔で実行される小さなチャンクにタスクを分割する必要があります。これにより、スクリプト実行の間にギャップが残され、ブラウザがコントロールを再描画し、ブラウザが再描画することができます。
6
定期的にスクリプトを中断してみてください。長時間の処理を続行する関数であるnextFunctionが長い遅延なしに必要な中断を提供するには、
setTimeout(nextFunction, 0);
を使用する必要があります。
関連する問題
- 1. Google Maps API v3.0で強制的に再描画するにはどうすればよいですか?
- 2. Firefoxでビデオ要素を強制的に再描画するにはどうすればよいですか?
- 3. モーダルが複数回描画されないようにするにはどうすればよいですか?
- 4. Android:強制的にソフトキーボードを強制終了するにはどうすればよいですか?
- 5. コントロールを再描画しないようにするにはどうすればよいですか?
- 6. MSBuildを強制的にクリーニングまたは再構築するにはどうすればよいですか?
- 7. スプライトの移動中にアプレットを再描画するにはどうすればよいですか?
- 8. JListはどのように再描画されますか?
- 9. スイフト - 強制的にソケットを閉じないようにするにはどうすればいいですか?
- 10. Androidで強制終了メッセージを処理するにはどうすればよいですか?
- 11. 動的に描画されたグラフィックのクリックを検出するにはどうすればよいですか?
- 12. 処理:xフレームごとにどのように描画すればよいですか?
- 13. オブジェクトを再描画するときに画面をクリアするにはどうすればよいですか?
- 14. Powershell:エラーがスクリプトに表示されないようにするにはどうすればよいですか?
- 15. Javaアプリケーションを強制的にネットワークプロキシにログオンさせるにはどうすればよいですか?
- 16. UIViewコンテキストへの描画が消えないようにするにはどうすればよいですか?
- 17. ブラウザでCookieが保存されないようにするにはどうすればよいですか?
- 18. ブラウザの再描画を強制し、UI更新の遅延を回避するにはどうすればよいですか?
- 19. オンラインストアをクロール中に動的URLを処理するにはどうすればよいですか?
- 20. JPanelにルーラーを描画するにはどうすればよいですか?
- 21. iPhoneに線を描画するにはどうすればよいですか?
- 22. ビットマップにボールドテキストを描画するにはどうすればよいですか?
- 23. アプリケーションにグラフを描画するにはどうすればよいですか?
- 24. サブビューにテキストを描画するにはどうすればよいですか?
- 25. AdMobをキャンバスに描画するにはどうすればよいですか?
- 26. リクエストのアップロード中にクライアントの中断を処理するにはどうすればよいですか?
- 27. 強制的にリッチテキストボックスにフォアグラウンドのみを再描画する
- 28. Camel Caseを処理するためにslugifyを強化するにはどうすればよいですか?
- 29. Android - ギャラリーに表示を再描画させるにはどうすればよいですか?
- 30. モバイルアプリを強制終了するにはどうすればよいですか?
ブラウザがシングルスレッドの場合はそうではありません。これには1つのJavaScriptスレッドがありますが、ページをレンダリングしてDOMを操作する並列スレッドがあります。 –
これは実際にあなたが話している*ブラウザに依存します。現在は、マルチブラウザモデル(各ブラウザのコンテンツは別々のプロセスであり、クロムも独自のプロセスになっている)のようなクロムのようなものもあります。しかし、 'while(1)'でブラウザを簡単にハングアップさせることができます。どのくらいのブラウザがハングするかは、ブラウザの構築方法によって異なります。 – Breton
while(1){}を呼び出すことによってjsスレッドをハングアップすることはできますが、これはDOM操作やコンテンツレンダリングに他のスレッドがないことを意味しません。つまり、JSスレッドが他のスレッドの実行をブロックする可能性があります。また、スレッドはブラウザのプロセスモデルとは何の関係も持たないかもしれません(ページごとに1つのプロセスまたはブラウザウィンドウ全体で1つのプロセス) –