2013-03-29 5 views
5

ページが最初に読み込まれるときに、何かをする前にすべてのリソースがロードされていることを確認するのに、window.onloadを使うことができます。DOMを変更した後のwindow.onload相当ですか?

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

(jQueryを使用すると問題ありません)。

+0

@Felixに追加された後を示して - 私はDOMへの変更を検出する必要はありません私は、DOMを変更した後にリソースがロードされたことを検出したい。あなたが参照しているすべての質問は、変更の検出に関するものです。 – UpTheCreek

+0

これを明示的に述べるべきでしょうか。 DOMが準備され、ロードされるすべてのリソースは2つの異なるものです。 –

+1

jQueryでは、ページが完全にレンダリングされたときにjQueryが発生し、DOM階層が構築されるとすぐに.ready()が発生します。コードがロードされたアセットに依存している場合(たとえば、イメージのサイズを取得する必要がある場合)、必要なアセットがすべて利用可能なときにコードが実行されるようにするには、.load()を使用する必要があります。さもなければ、コードがレンダリング中に実行されるので、.ready()を使って処理を高速化することができます。 – excentris

答えて

2

短い答え: いいえ。

長い答え: あなたが探していることがわかっている場合は、変異観察者(https://developer.mozilla.org/en-US/docs/DOM/MutationObserver)を使用することができます。新しいブラウザでのみサポートされています。クロムのあるバージョンでは、クロージャで使用するとメモリリークが発生します。

BTW、 document.readyは、すべての(または任意の)リソースがロードされたかどうかを知らせません。それはdomが準備ができていることを伝えるだけです(それは、すべてのリソース(まあ、javascriptを使用して要求されていないリソース)がダウンロードされた後にのみ起動するロード機能です)。

0

.done()を使用できます。

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

はまた、jQueryプラグインがありSee Here

+1

私はディペシュに従いますかわかりません。私はajax呼び出しから約束を付けることができますが、これは私がデータを持っている時だけ教えてくれます。これをDOMに挿入した後にロードを開始したリソースについては教えてくれません。それとも別の意味ですか? – UpTheCreek

0

私はYES

テストケースあなたはここで見つけることができます(これは、すべてのブラウザでサポートされている場合、私は。私はSafariとクロームでそれを使用するかわからない)と言うでしょう:http://maakmenietgek.nl/testcases/domready/

テストケーススタンドアロンはindex.htmlには、次のように

に見える理由です、私はそれがフィドルで働くことができませんのでご注意ください

$.get呼び出しでロードされたデータは、次のようになります

<p>added data</p> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     alert('added data'); 
    }); 
</script> 

アラートは、HTMLがDOM

関連する問題