Wie bereits erwähnt, funktioniert die Xavi-Antwort nicht, wenn sich Bilder im Cache befinden. Das Problem reagiert darauf, dass das Webkit das Ladeereignis für zwischengespeicherte Bilder nicht auslöst. Wenn also die Breiten- / Höhenattrs im img-Tag nicht explizit festgelegt sind, können Sie die Bilder nur dann zuverlässig abrufen, wenn das window.load
Ereignis ausgelöst wird.
Das window.load
Ereignis wird immer ausgelöst , so dass Sie sicher und ohne Trick auf die Breite / Höhe von und danach zugreifen können.
$(window).load(function(){
//these all work
$('img#someId').css('width');
$('img#someId').width();
$('img#someId').get(0).style.width;
$('img#someId').get(0).width;
});
Wenn Sie die Größe dynamisch geladener Bilder ermitteln müssen, die möglicherweise zwischengespeichert werden (zuvor geladen), können Sie die Xavi-Methode plus eine Abfragezeichenfolge verwenden, um eine Cache-Aktualisierung auszulösen. Der Nachteil ist, dass es eine weitere Anforderung an den Server für ein Bild gibt, das bereits zwischengespeichert ist und bereits verfügbar sein sollte. Dummes 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: Wenn Sie bereits einen QueryString img.src
haben, müssen Sie ihn analysieren und den zusätzlichen Parameter hinzufügen, um den Cache zu leeren.