2011-07-05 13 views
3

domreadyイベントを追跡するためのjQueryソースコードを見ていますが、私が完全に理解していないことが1つあります。スクリプトが動的にインクルードされ、非同期にロードされる場合はどうなりますか?そうすれば、スクリプトが読み込まれたときにドキュメントがすでに読み込まれている可能性があります。 jQueryがこれを確認する唯一の場所は、document.readyStateです。Jqueryはどのように動作していますか?

私が間違っている場合は私を修正しますが、このプロパティはFirefoxにはまったく導入されていませんか?もしそうなら、DomContentLoadedイベントが既に発生している可能性があります(ウィンドウのonLoadでも可能です)。そのような状況でdomready上のコードを実際に呼び出す方法はありません。

答えて

3

jQueryの現在のバージョンでは、すべて「遅延」メカニズムで処理されます。ページの準備はDeferredオブジェクトにカプセル化され、関数は単に "done()"キューに追加されます。 Deferred APIはページの準備ができているかどうかを単に記憶しているので、ページの準備ができた後に「準備完了」ハンドラとして関数を渡すだけで、関数がただちに呼び出されます。

実際に「準備完了」がいつ発生したかを把握するコードはかなり厄介です。

関連する問題