5

ページが最初にロードされるとき、window.onload何かを行う前にすべてのリソースがロードされていることを確認するために使用できます。

私の質問は、DOM を変更した場合 (たとえば、ajax リクエストに基づいて HTML を挿入する場合)、ドキュメントが再び「ロード済み」状態になったときに発生するイベントはありますか? (たとえば、挿入された html に複数の画像が含まれている場合)。

(jQueryを使用したソリューションで問題ありません)。

4

3 に答える 3

2

短い答え:いいえ。

長い答え: 探しているものがわかっている場合は、ミューテーション オブザーバー ( https://developer.mozilla.org/en-US/docs/DOM/MutationObserver ) を使用できます。これは新しいブラウザーでのみサポートされており、一部のバージョンの chrome では、クロージャーと共に使用するとメモリ リークが発生します。

ところで、document.ready は、リソースのすべて (またはいずれか..) が読み込まれたかどうかを通知しません。dom の準備ができていることだけがよくわかります (つまり、すべてのリソース (JavaScript を使用して要求されていないすべてのリソース) がダウンロードされた後にのみ起動する load 関数です)。

于 2013-03-29T09:56:29.243 に答える
0

はいと言うでしょう (これがすべてのブラウザーでサポートされているかどうかはわかりません。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に追加された後にアラートが表示されます

于 2013-03-29T10:18:10.820 に答える
0

使用できます.done()

説明: Deferred オブジェクトが解決されたときに呼び出されるハンドラーを追加します。

jQueryプラグインもありますSee Here

于 2013-03-29T09:56:46.277 に答える