Получение реального размера картинки при помощи jQuery

Казалось бы, обычная задача – взять height и width картинки, а нет – то один браузер конючит, то другой… решение следующие:


// берем все необходимые нам картинки
var $img = $('img');

// ждем загрузки картинки браузером
$img.load(function(){
    // удаляем атрибуты width и height
    $(this).removeAttr("width")
           .removeAttr("height")
           .css({ width: "", height: "" });

    // получаем заветные цифры
    var width  = $(this).width();
    var height = $(this).height();
});

// для тех браузеров, которые подгрузку с кеша не считают загрузкой, пишем следующий код
var src  = $img.attr('src');
              $img.attr('src', '');
              $img.attr('src', src);

Другие посты на эту тему

10 Responses to “Получение реального размера картинки при помощи jQuery”

  1. CharnaD says:

    Оригинально)

  2. Великий могучий JavaScript!
    Интересное решение, довольно оригинальное.

  3. Octane says:

    для тех браузеров, которые подгрузку с кеша не считают загрузкой, пишем следующий код

    Все они нормально считают, просто событие load у картинок из кэша наступает быстрее, чем DOMContentLoaded, и ничего в этом нелогичного нет. Состояние готовности изображения можно проверить, получив его свойство complete.

  4. nex2hex says:
    imageObject = new Image();
    imageObject.onload = function() {
      w = imageObject.width;
      h = imageObject.height;
    }

    чем плохо это решение?

    • passtas says:

      Тем, что картинки которые уже находятся в кэше загрузятся раньше чем скрипты. Т.е. onLoad у них произойдет несколько раньше, чем ты сумеешь привязать его к ДОМ-объекту. И в итоге ты не успеешь забрать размер картинки.

  5. devul says:

    как я понял данное решение является кроссобраузерным? не будет траблов например с ie6?

  6. Артём says:

    Вы меня извините, но последний пасс – это настоящая пляска с бубном… Нельзя ли как-нить поизящнее? Например, нициировать эвент «load»? )) .load()

Leave a Reply

Copyright © 2007-2010, Anton Shevchuk. Powered by WordPress