3

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

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

4

1 に答える 1

3

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

ただし、「準備完了」が実際にいつ発生するかを追跡するコードはかなり苦しめられています。

于 2011-07-05T15:41:29.360 に答える