私は、JavaScriptでフロントエンドに大部分が構築されているWebページを持っています。基本的なHTMLが解析され、DOMツリーが構築されると、「ready」イベントがトリガーされます。このイベントで、Webページの構築を続行するjavascriptコードが起動します。
$().ready(function() {
$(document.body).html('<img src = "img.png" />');
$.ajax({
url: 'text.txt'
});
});
この小さな例でわかるように、
- 新しい要素がDOMに追加されます
- 画像が読み込まれているなど、より多くのもの
- ajaxリクエストが送信されています
これがすべて終了したとき、ブラウザの読み込みプログレスバーが初めて消えたときだけ、私は自分のドキュメントが実際に準備ができていると見なします。このイベントを処理するための合理的な方法はありますか?
これに注意してください
$().ready(function() {
$(document.body).html('<img src = "img.png" />');
$.ajax({
url: 'text.txt'
});
alert('Document constructed!');
});
HTTPリクエストは非同期であるため、十分ではありません。たぶん、すべてのリクエストにハンドラーをアタッチして、すべてが終了したかどうかを確認することは、私がやりたいことを行う1つの方法ですが、もっとエレガントなものを探しています。
付録: 私が探しているイベントのより正式な定義:
ユーザーがマウスの移動やクリックなどで別のイベントをトリガーしない限り、ドキュメントの準備ができてページの動的コンテンツの両方が初めてロード/実行を終了したときのイベント。