ページが最初にロードされるとき、window.onload
何かを行う前にすべてのリソースがロードされていることを確認するために使用できます。
私の質問は、DOM を変更した場合 (たとえば、ajax リクエストに基づいて HTML を挿入する場合)、ドキュメントが再び「ロード済み」状態になったときに発生するイベントはありますか? (たとえば、挿入された html に複数の画像が含まれている場合)。
(jQueryを使用したソリューションで問題ありません)。
ページが最初にロードされるとき、window.onload
何かを行う前にすべてのリソースがロードされていることを確認するために使用できます。
私の質問は、DOM を変更した場合 (たとえば、ajax リクエストに基づいて HTML を挿入する場合)、ドキュメントが再び「ロード済み」状態になったときに発生するイベントはありますか? (たとえば、挿入された html に複数の画像が含まれている場合)。
(jQueryを使用したソリューションで問題ありません)。
短い答え:いいえ。
長い答え: 探しているものがわかっている場合は、ミューテーション オブザーバー ( https://developer.mozilla.org/en-US/docs/DOM/MutationObserver ) を使用できます。これは新しいブラウザーでのみサポートされており、一部のバージョンの chrome では、クロージャーと共に使用するとメモリ リークが発生します。
ところで、document.ready は、リソースのすべて (またはいずれか..) が読み込まれたかどうかを通知しません。dom の準備ができていることだけがよくわかります (つまり、すべてのリソース (JavaScript を使用して要求されていないすべてのリソース) がダウンロードされた後にのみ起動する load 関数です)。
はいと言うでしょう (これがすべてのブラウザーでサポートされているかどうかはわかりません。Safari と chrome で使用しています)。
ここで見つけることができるテストケース:http://maakmenietgek.nl/testcases/domready/フィドルでは動作しないことに注意してください。そのため、スタンドアロンのテストケースです
index.html は次のようになります。
<!DOCTYPE html>
<head>
<title>Testcase</title>
<script src="jquery-1.8.2.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#clickme').click(function() {
$.get('ajaxdata.html', function(data) {
$('#addhere').html(data);
});
});
})
</script>
</head>
<body>
<p id="clickme">clickme</p>
<div id="addhere">
</div>
</body>
</html>
呼び出しでロードされたデータ$.get
は次のようになります
<p>added data</p>
<script type="text/javascript">
$(document).ready(function() {
alert('added data');
});
</script>
HTMLがDOMに追加された後にアラートが表示されます