2016-05-25 7 views
1

私は時々または他の時にイメージが挿入される動的に変化するページを持っています。 イメージ(指定されたimg src、alt属性を持つ)がこのページにロードされる各インスタンスを知りたいです。同じページに複数回ロードされた画像に画像ロードイベントを取り込む方法は?

** PS-ページには、同じ種類の画像がいくつあってもかまいません。 イメージはキャッシュされず、動的にページ内に挿入されます。

$("img").one("load", function() { 
    // do stuff 
}).each(function() { 
    if(this.complete) $(this).load(); 
}); 

上記のコードサンプルは私のためには機能しません。 **

+0

...このアプローチを進めることを確認することができますDOMで?あなたのコードを教えてください? '追加されたDOM'から' image'要素を見つける方法があります – Rayon

+0

イメージロード時に(イメージがキャッシュされている場合でも)[jQueryコールバックの可能な複製]](http://stackoverflow.com/questions/3877027/jquery-callback-画像上に画像がロードされている場合でも) –

+0

@JitinMaherchandani:上記のコメントはあなたの問題を解決しますか? –

答えて

1

ここでは、あなたは、任意のDOMノードがページに追加されたときに起動されますDOMNodeInsertedのイベントを登録することができ、一つのことを行うことができます。追加された要素がimgかどうかを確認することができます。それがイメージであれば、onloadイベントを登録することができます。これは事のイメージ負荷種類にあなたを処理する

$('body').append($("<img src='http://www.freedomwallpaper.com/nature-wallpaper/nature-hd-wallpapers-water.jpg'>")) 

画像の

$(document).on('DOMNodeInserted', function(event) { 
    console.log($(event.target).is('img')); 
    if($(event.target).is('img')) { 
    $(event.target).one("load", function() { 
     // do stuff 
     console.log("one", arguments) 
    }); 
    } 
}); 

例負荷...あなたは毎回かどう呼ばれていることを確認する必要がありますかparentNodeは、その後chalidNodeが含まれている場合

どのように処理されているのですか?詳細を見る必要があるかもしれません...

もう1つのオプションは、1000mと呼ばれるsetInterval関数を使うことですilisecondsと任意のDOMの変更をチェック...とあなたがイメージがロードされているものかどうか

setInterval(function() { 
    $.each($('img'), function(index, image) { 
     console.log(image.complete) 
    }); 
}, 1000) 

をIEと、あなたは `images`を追加するにはどうすればよい

関連する問題