ブラウザは、画像のサイズを知っている(画像のダウンロードが完了する前に)可能な限り早い時間を通知する特別なイベントを提供しません。できることは、適切なロードハンドラーを設定して、イメージのダウンロードが完了し、そのサイズがわかるようにすることだけです。
一部のブラウザでは、画像全体が読み込まれる少し前に高さと幅を取得するためのブルートフォース攻撃の方法は、読み込み中の画像をポーリングしてとの存在を確認すること.width
です.height
。ChromeのこのjsFiddleでは、onload()
イベントが発生する前に利用できる場合があります。私は他のブラウザでこれをテストしていません。
オンロードハンドラーのルートをたどり、.src
特定の画像タグがページのHTMLにある場合、ロードされたときに通知を受け取るようにする唯一の方法は、インライン画像ハンドラーを配置して、ハンドラーがからインストールされるようにすることです。非常に始まり:
<img src="xxx.jpg" onload="handleLoad(this)">
ページのJavaScriptからイベントハンドラーをアタッチしようとすると、遅すぎる可能性があります(画像の読み込みが完了した後)。ブラウザは中間イベント情報を提供しません(サイズはわかっているが、画像のダウンロードが完了していない場合など)。
動的に作成された画像オブジェクト(JavaScriptで作成した画像オブジェクト)の場合、オブジェクトを作成するときにloadイベントのリスナーをアタッチできます。
var img = new Image();
img.onload = function() {
// the image is now loaded here and height and width are known
};
img.src = "xxxx.jpg";
注:動的に作成された画像オブジェクトでこれを行う場合は、値を設定する前にonload
ハンドラーを設定する必要があり.src
ます。.src
IEの一部のバージョンでは、画像がキャッシュされている場合、値が設定されるとすぐにloadイベントが発生するため、.src
最初に設定してからハンドラーを設定すると、画像がブラウザーのキャッシュにある場合はイベントonload
を見逃します。onload