サイズを測定するためにドキュメントに追加する必要はありませんが、少なくとも部分的に読み込まれるまで待つ必要があります。あなたが一度に一つの画像よりも、おそらく多くのためにそれを行うと、それは、すぐにサイズが利用可能であるとしてコールバックを呼び出すする必要がある場合、あなたは私のimageloaderモジュールを使用することができます。
var ImageLoader = {
maxChecks: 1000,
list: [],
intervalHandle : null,
loadImage : function (callback, url) {
var img = new Image();
img.src = url;
if (img.width && img.height) {
callback (mg.width, img.height, url, 0);
}
else {
var obj = {image: img, url: url, callback: callback, checks: 1};
var i;
for (i=0; i < this.list.length; i++) {
if (this.list[i] == null)
break;
}
this.list[i] = obj;
if (!this.intervalHandle)
this.intervalHandle = setInterval(this.interval, 30);
}
},
// called by setInterval
interval : function() {
var count = 0;
var list = ImageLoader.list, item;
for (var i=0; i<list.length; i++) {
item = list[i];
if (item != null) {
if (item.image.width && item.image.height) {
item.callback (item.image.width, item.image.height, item.url, item.checks);
ImageLoader.list[i] = null;
}
else if (item.checks > ImageLoader.maxChecks) {
item.callback (0, 0, item.url, item.checks);
ImageLoader.list[i] = null;
}
else {
count++;
item.checks++;
}
}
}
if (count == 0) {
ImageLoader.list = [];
clearInterval (ImageLoader.intervalHandle);
delete ImageLoader.intervalHandle;
}
}
};
出典
2011-06-03 17:46:24
rob
+1、イメージの 'onload'に関する通常の注意点があります:一部のブラウザでは、イメージがキャッシュされてもイベントは発生しません。 (「画像とともに使用する場合の負荷事象の警告」(http://api.jquery.com/load-event/)を参照してください。 –
+1これはほとんど意味があります! * facepalm * –