次のコードは、使用可能になるとすぐに幅と高さを返します。テストのために、画像ソース内の変更するabc123
をランダムな文字列に変更して、キャッシュを防止します。
JSFiddle Demoもあります。
<div id="info"></div>
<img id="image" src="https://upload.wikimedia.org/wikipedia/commons/d/da/Island_Archway,_Great_Ocean_Rd,_Victoria,_Australia_-_Nov_08.jpg?abc123">
<script>
getImageSize($('#image'), function(width, height) {
$('#info').text(width + ',' + height);
});
function getImageSize(img, callback) {
var $img = $(img);
var wait = setInterval(function() {
var w = $img[0].naturalWidth,
h = $img[0].naturalHeight;
if (w && h) {
clearInterval(wait);
callback.apply(this, [w, h]);
}
}, 30);
}
</script>
これは知っていることがとても涼しいです。私が追加する1つのことは、imgの高さや幅が画像タグまたはCSSに設定されている場合、画像の自然なサイズではなく、その値が返されるということです。ブラウザによっては、naturalWidth属性とnaturalSize属性をサポートするものがあります。あなたはあなたのフィドルのこのMODでそれを見ることができますhttp://jsfiddle.net/jfriend00/rQwD4/ – jfriend00
驚き、ありがとう! – katspaugh
@katspaugh あなたのコメントと提供されたデモをありがとう、それは私が探していたものです! @ jfriend00 私は自然なサイズの問題について知っていましたが、修正された例のおかげで、私の仕事は少なくなりました。 – user828591