setTimeout(fn, 0) が動的選択設定の問題を解決できる理由
選択要素の事前選択値が動的に設定されるというバグが発生しましたIE6 では依然として間違っていたため、開発者は setTimeout(fn, 0) で問題に対処しました。
この問題は、ブラウザによるドロップダウン リストの初期化と、選択されたインデックスを設定しようとする JavaScript コードの間の競合状態から発生しました。 JavaScript の単一スレッドの実行に固有のこの競合により、ブラウザが DOM を更新する準備が整う前にコードが残されてしまいました。
setTimeout(fn, 0) の回避策は、コールバック関数が短い遅延の後に非同期で実行されるようにスケジュールしました (約10ミリ秒)。この遅延により、ブラウザーは DOM を初期化できるようになり、コードが選択したインデックスを正確に設定するのに十分な時間を確保できました。
この解決策は、ブラウザーが必要な DOM 更新を完了するまでコードの実行を遅らせることで、競合状態を効果的に回避しました。 。 Internet Explorer の特定のバージョンでは、そのような回避策が必要な奇妙な動作が発生したり、コードベース内の真の問題を示したりする可能性があることは注目に値します。これらの概念をより深く理解するには、Philip Roberts の講演「イベント ループとは一体何ですか?」
を参照してください。以上が古いブラウザでの動的選択要素選択の問題が「setTimeout(fn, 0)」で修正されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。