サーバーまたはブラウザキャッシュからの画像の読み込みが完了したことをどのように検出できますか?同じ<img/>
タグでさまざまな画像を読み込み、新しい画像の読み込みがいつ終了したかを検出したい。
ありがとうございました。
$('img').on('load', function() {
// do whatever you want
});
onload
ドキュメントのイベントは、含まれているすべての要素、画像、が完全に読み込まれた後にのみ発生します。
onload
<img>のイベントは、単一の画像が完全に読み込まれた後に発生します。
したがって、jQueryオブジェクトまたはDOMのaddEventListener(およびIEのattachEvent)を使用して、これらのイベントにリスナーをアタッチできます。
これは少しきれいに見えると思います
$('img').load(function() {
// Your img has finished loading!
});
さて、これは私が昨日遭遇したかなり古いスレッドです。 backbone.jsとrequire.jsを使用していて、レイアウトのサイズを変更すると、画像を含むビューで常に問題が発生しました。
したがって、レイアウトのサイズを変更するために、最後の画像の読み込みがいつ完了したかを知る方法が必要でした。上記のすべての解決策は私の場合うまくいきませんでした。数時間の調査の結果、私は機能している究極のソリューションを見つけました。
http://desandro.github.com/imagesloaded/
それが他の人にも役立つことを願っています。
非常によく似た質問 jQueryに何かを実行する前にすべての画像が読み込まれるのを待つ公式な方法 とPikrassが言うように:
JQueryでは、
$(document).ready()
を使用して、[〜#〜] dom [〜#〜]がロードされたときに何かを実行し、$(window).load()
画像など、他のすべてのものも読み込まれたときに何かを実行します。
次に2つの例を示します。
jQuery(document).ready(function(){
console.log('DOM ready');
});
jQuery(window).load(function(){
console.log('all other things ready');
});
コンソールで確認できるはずです:
screenshot-with-shadow.png http://img547.imageshack.us/img547/9681/yih.png
誰もがイベントをsrcに設定する前に発生させるべきだと述べました。
しかし、それについて心配したくない場合は、oncomplete
イベント(キャッシュされたイメージでも発生します)を使用して、次のようにonload
を発生させることができます。
$("img").one("load", function() {
// do stuff
}).each(function() {
if(this.complete) $(this).load();
});
JQueryを使用すると、下位互換性を気にする必要はありません(例:img.height>0
in IE
)