Jak wspomniano wcześniej, odpowiedź Xavi nie będzie działać, jeśli obrazy znajdują się w pamięci podręcznej. Problem występuje w przypadku, gdy webkit nie uruchamia zdarzenia ładowania na buforowanych obrazach, więc jeśli atrybuty szerokość / wysokość nie są wyraźnie ustawione w znaczniku img, jedynym niezawodnym sposobem na uzyskanie obrazów jest oczekiwanie na uruchomienie window.load
zdarzenia.
window.load
Wydarzenie zadziała zawsze , więc jest to bezpieczne, aby uzyskać dostęp do szerokość / wysokość i img potem bez podstęp.
$(window).load(function(){
//these all work
$('img#someId').css('width');
$('img#someId').width();
$('img#someId').get(0).style.width;
$('img#someId').get(0).width;
});
Jeśli chcesz uzyskać rozmiar dynamicznie ładowanych obrazów, które mogą zostać zbuforowane (wcześniej załadowane), możesz użyć metody Xavi oraz ciągu zapytania, aby uruchomić odświeżanie pamięci podręcznej. Minusem jest to, że spowoduje kolejne żądanie do serwera, dla obrazu, który jest już buforowany i powinien być już dostępny. Głupi Webkit.
var pic_real_width = 0,
img_src_no_cache = $('img#someId').attr('src') + '?cache=' + Date.now();
$('<img/>').attr('src', img_src_no_cache).load(function(){
pic_real_width = this.width;
});
ps: jeśli masz już QueryString img.src
, będziesz musiał go przeanalizować i dodać dodatkowy parametr, aby wyczyścić pamięć podręczną.