2011-12-30 10 views
3

私は<img> onload関数を使用して、読み込まれたイメージのサイズ変更アクションをトリガーします。しかし、1つのWebページに同じ "src"を持つ2つ以上の<img>がある場合、イメージが同じであることを意味します。後者の<img>のonload()関数は呼び出されません。同じsrcを持つ<img>がある場合でも、<img>がすべて正しくサイズ変更されていることを確認するにはどうすればよいですか?javascript img onload()

ありがとうございました。

+2

あなたの現在のコードは何ですか? – Purag

+1

imgタグに '.src'プロパティが設定される前に' .onload'ハンドラが設定されている場合、画像がブラウザのキャッシュから来ていてもonloadハンドラが起動するはずです。 '.src'を先に(あるいはあなたのページのHTMLにすでに設定されている)設定してから' .onload'を設定すると、遅すぎるかもしれません。 – jfriend00

+0

@ jfriend00私はコードを使用してバインドしますが、あなたの説明に相当する効果は何ですか? –

答えて

2

これは、ブラウザが実際に最初の画像をキャッシュしているために発生しています。したがって、同じ「src」を再度ロードしようとすると、ローカルにキャッシュされ、実際にオンロードが実行されることはありません。常に読み込むために、クエリ文字列に一意の値を追加することができます。

1

代わりの各<img/>のために別々のonloadハンドラを使用して、なぜちょうどwindowのための単一のonloadイベントを使用していませんか?このイベントはの後にすべて(すべての画像のように)がロードされた後に起動するので、その単一のハンドラで各画像を処理することができます。次のようなものがあります。

function processAllImages() 
{ 
    var imgElts = document.getElementsByTagName('img'); 
    for (var i=0; i<imgElts.length; i++) 
    { 
     processImage(imgElts[i]); // TODO write this function 
    } 
} 

window.onload = processAllImages; 
+0

レイアウトを行うには、各画像の幅と高さを計算する必要があります。一部の画像は非常にゆっくりと読み込まれます –