Як було сказано раніше, відповідь Xavi не буде працювати, якщо зображення є в кеші. Проблема відповідає на те, що webkit не запускає події завантаження на кешовані зображення, тому якщо позначення ширини / висоти явно не встановлені в тезі img, єдиний надійний спосіб отримати зображення - дочекатися, коли window.load
подія буде запущена.
window.load
Подія буде спрацьовувати завжди , так що це безпечно для доступу до ширини / висоти і IMG після цього без будь - яких трюк.
$(window).load(function(){
//these all work
$('img#someId').css('width');
$('img#someId').width();
$('img#someId').get(0).style.width;
$('img#someId').get(0).width;
});
Якщо вам потрібно отримати розмір динамічно завантажених зображень, які можуть бути кешовані (раніше завантажені), ви можете використовувати метод Xavi плюс рядок запиту, щоб викликати оновлення кешу. Мінус полягає в тому, що він викличе ще один запит на сервер, для імг, який уже є кешованим і повинен бути вже доступний. Дурний вебкіт.
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: якщо у вас вже є QueryString img.src
, вам доведеться проаналізувати його та додати додатковий параметр, щоб очистити кеш.