2011-09-16 9 views
14

jsonファイルを読み込んだらimg srcを変更していますが、これは問題なく動作します。しかし、私はイメージが完全に読み込まれていることを確認したい。srcを変更するときの画像読み込み時のjqueryコールバック

 .one("load",function(){ 
       alert("image has load yay"); 
      }); 

しかし、画像がキャッシュにある場合、すべてのブラウザが負荷を発生させるわけではないさまざまな投稿を読んだ後。私は、この問題を引き起こすことになっているブラウザでこの問題が発生しているようではありません。しかし、私はMacでFF(6.0.2)、Chrome(13.0.7)、Safari(5.0.5)のみをテストしています。今私はIEが問題を抱えている必要があり、それはPC関連のみであると確信しています。私はブラウザのかなり最近のバージョンを実行しているので、これらの中で何かが変わり、現在は負荷がかかります。または私の他の考えは、jQuery(1.6.3)の最新バージョンを実行しています。負荷が変更されている?

私は最新のjqueryを実行することをすべて望んでいますが、そうでない場合は古いブラウザの問題ですので、修正する必要があります。 jQuery loading images with complete callback をし、また.LOADのAPIページ上のコメントのいくつか:私は、例えば、このサイト上でソリューションのカップルを試してみた http://api.jquery.com/load-event/#comment-30211903

をしかし、私は彼らが仕事を得るように見えることはできません。最初のものはまったく動作せず、2番目のものは.each()で置き換えられます。

これは私がこれまで行ってきたコードですが、正常に動作するようですが、古いブラウザの問題があるとは確信できません。

$.getJSON(jsonURL, function(json) {   
    $("a.imgZoom img").attr("src", json[imageID].largeImage).one("load",function(){ 
     alert("the image has loaded"); 
    //do something here 
    }); 
$("a.imgZoom").attr("href", json[imageID].largeImage); 
}) 

ご協力いただきありがとうございます。私はおよそ一年前にやったいくつかのテストに基づいて

B

答えて

34

、私は別の値から画像の.srcを変更する際の負荷イベントを取得するための信頼できる方法を発見しました。そのため、私は、新しいイメージをロードし、新しいイメージがロードされたときに新しいイメージを置き換える必要がありました。このコードは、数百のWebサイト(スライドショーで使用されている)で約1年間稼動しています。

新しいイメージに.srcプロパティを設定する前にロードハンドラを設定すると、確実にロードイベントが発生します。ロード・イベントをキャプチャするために私が今までに書いたコードは、jQuery: How to check when all images in an array are loaded?です。

.SRCは、私は(私は古いブラウザをテストしていない)でそれを試してみた近代的なブラウザで私の作品の設定前にイベントハンドラをアタッチこのコード:

$("img").one("load", function() { 
     // image loaded here 
    }).attr("src", url); 

あなたはそれを見ることができますここで働く:http://jsfiddle.net/jfriend00/hmP5M/そして、あなたはそのjsFiddleを使ってあなたが望むブラウザをテストすることができます。画像をクリックすると、新しい画像がロードされます。それは3つの異なるイメージ(毎回.srcを設定する)を循環し、そのうち2つ(キャッシュから決してではない)とキャッシュから1つを一意的にロードして、両方の場合をテストします。 .loadハンドラが呼び出されるたびにmsgを出力し、呼び出されたかどうかを確認することができます。

+0

返事のおかげで、私は前にそれを呼び出すことができますどのように残念100%確実ではありません。あなたの例を見てみると、私が動作しているように私の答えに例を追加しました。 – Ben

+0

を助けていません私はあなたの言葉を受け取ります。 – jfriend00

+0

ありがとうjfriend00、取り組んでいます。私はそれが私のよう.LOADで可能な問題を修正かどうかわからもちろんないんだということだ:(いずれか – Ben

関連する問題