Como se indicó anteriormente, la respuesta de Xavi no funcionará si las imágenes están en el caché. El problema responde a que webkit no dispara el evento de carga en las imágenes en caché, por lo que si los atributos de ancho / alto no están establecidos explícitamente en la etiqueta img, la única forma confiable de obtener las imágenes es esperar a que se active el window.load
evento.
El window.load
evento se disparará siempre , por lo que es seguro acceder al ancho / alto de e img después de eso sin ningún truco.
$(window).load(function(){
//these all work
$('img#someId').css('width');
$('img#someId').width();
$('img#someId').get(0).style.width;
$('img#someId').get(0).width;
});
Si necesita obtener el tamaño de las imágenes cargadas dinámicamente que podrían almacenarse en caché (previamente cargadas), puede usar el método Xavi más una cadena de consulta para activar una actualización de caché. La desventaja es que causará otra solicitud al servidor, para un img que ya está en caché y ya debería estar disponible. Estúpido 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: si ya tiene un QueryString en el img.src
, tendrá que analizarlo y agregar el parámetro adicional para borrar el caché.