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.load
olayın tetiklenmesini beklemektir .
window.load
Olay 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.src
Zaten bir QueryString'iniz varsa, onu ayrıştırmanız ve önbelleği temizlemek için fazladan param eklemeniz gerekir.