2009-05-27 8 views
2

最近、イメージやスタイルシートなど、ページのすべてのリソースがロードされたときを検出する方法を尋ねました。答えは戻ってきて、$(window).load();を使ってください。 jQueryのメソッドリソースがajax経由でロードされたときを検出する

私の質問は、コンテンツがAJAX経由で読み込まれたときをどのように検出するのかです。 AJAXはいくつかのimg要素、例えばDOMを注入します...それらの画像の読み込みがいつ終わったのか、どうすればわかりますか?

答えて

2

$.get()または$.post()関数では、ajax要求が完了したときに呼び出される関数の名前を指定できます。たとえば:

$.get("something.php",{data:'test'},foo); 

function foo() 
{ 
    // This function will be called when the request has completed 
} 

または:Ajaxがフェッチ時に検出

$.get("something.php",{data:'test'},function() 
    { 
    //This function will be called in the same way 
    } 

); 
+0

AJAXリクエストがHTMLを返し、その後、ブラウザがフェッチ行くので、私は、AJAXリクエストが完了したときに知っておく必要はありません。イム年齢 –

+0

私は間違っている可能性がありますが、イメージの高さと幅がわかっている場合(おそらく、サーバーによって返されたhtml/JSONで返される可能性があります)、コールバック関数でwhileループを実行して、 "#img")。attr( "height")などは、予想される高さに一致します。それは、画像が完全にロードされたことを意味する可能性があります。 –

+0

残念ながら、これは十分な動的ではありません。これはどんなサイズでも入力できるユーザーコンテンツです... –

0

は簡単です:jQueryの中で定義されたAjaxのイベントを使用します。http://docs.jquery.com/Ajax

しかし、私は、あなたが求めているか分かりません同じこと。イメージのロードが完了したときを検出するには(おそらく、イメージのsrc属性が変更されたときのイベントと同じになります)、突然変異イベントを使用できます。 http://wiki.github.com/jollytoad/jquery.mutation-events 歓声、

jrh。

+0

イメージsrcは常にリソースに設定されます...リソースがフェッチされると変更されません。 –

2

あなたが成功したリクエストに設定されたコールバック関数を持つことができます$.ajaxを呼び出す場合:

$.ajax({ 
    url: _url, 
    type: _type, 
    data: _data, 
    dataType: _dataType, 
    success: _success 
}) 

var _success = function(result) { 
    $html = $(result); 
    alert('HTML downloaded'); 

    // inject HTML into DOM here 
} 

あなたは画像要素を取得するために$のhtmlを通過する必要がありますし、それらのそれぞれのために画像はイメージがロードされたときに起動ロード関数コールバックを登録します。

$('#myImage').load(function() { 
    alert('Image Loaded'); 
}); 
+0

イメージはAJAX呼び出しの直後にロードされません。DOMが更新され、リソースがフェッチされます。 –

+0

ああ、私は参照してください。私はあなたを軌道に乗せるために少し答えを更新しました。 – aleemb

+0

私はこの機能を使用して、イメージカウントを読み込んだイメージカウントと一致させようとします。ありがとうございます... –

関連する問題