Daha önce belirtildiği gibi, görüntüler önbellekte ise Xavi yanıtı çalışmaz. Sorun webkit'e önbelleğe alınan görüntülerde load olayını tetiklememesine yanıt veriyor, bu nedenle genişlik / yükseklik izinleri img etiketinde açıkça ayarlanmadıysa, görüntüleri almanın tek güvenilir yolu window.loadolayın tetiklenmesini beklemektir .
window.loadOlay ateş edeceği zaman herhangi bir hile olmadan bundan sonra genişlik / yükseklik ve img erişmek böylece güvende.
$(window).load(function(){
//these all work
$('img#someId').css('width');
$('img#someId').width();
$('img#someId').get(0).style.width;
$('img#someId').get(0).width;
});
Önbelleğe alınabilecek (önceden yüklenmiş) dinamik olarak yüklenmiş görüntülerin boyutunu almanız gerekiyorsa, önbellek yenilemesini tetiklemek için Xavi yöntemini ve bir sorgu dizesini kullanabilirsiniz. Dezavantajı, zaten önbelleğe alınmış ve zaten kullanılabilir olması gereken bir img için sunucuya başka bir istek neden olacaktır. Aptal 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: img.srcZaten bir QueryString'iniz varsa, onu ayrıştırmanız ve önbelleği temizlemek için fazladan param eklemeniz gerekir.