Подтвердить что ты не робот

Высота изображения с использованием jquery in chrome problem

$('img').height() возвращает 0 в chrome, но возвращает фактическую высоту в IE и firefox.

Каков фактический метод получения высоты изображения в хроме?

4b9b3361

Ответ 1

Как сказал Джош, если изображение еще не загружено полностью, jQuery не будет знать, каковы размеры. Попробуйте что-то подобное, чтобы убедиться, что вы пытаетесь получить доступ к этим размерам после полной загрузки изображения:

var img = new Image();

$(img).load( function() {
    //-- you can determine the height before adding to the DOM
    alert("height: " + img.height);
    //-- or you can add it first...
    $('body').append(img);
    //-- and then check
    alert($('body img').height());
}).error( function() {
    //-- this will fire if the URL is invalid, or some other loading error occurs
    alert("DANGER!... DANGER!...");
});

$(img).attr('src', "http://sstatic.net/so/img/logo.png");

Ответ 2

Мое предположение заключается в том, что эта функция вызывается до того, как изображение закончит загрузку. Можете ли вы попробовать поставить задержку на функцию, чтобы убедиться, что это действительно так? Если это так, вы можете обмануть, используя таймер перед запуском функции.

Чуть сложнее обнаружить, когда изображение было загружено. Посмотрите на этот script для некоторых идей - возможно, это сработает для вас.

Ответ 3

Немного уродливое, но эффективное исправление, которое я использовал, использовало бэкэнд-язык, в моем случае php, чтобы получить высоту и установить ее на изображении перед отправкой в ​​браузер.

это уродливо, но просто и быстро

Ответ 4

Предварительная загрузка изображения и настройка функции обратного вызова могут быть тем, что вы ищете:

// simple image preloader
function getHeight(el,fn) {
    var img = new Image();
    img.onload = function() { fn(img.height); };
    img.src = el.attr("src");
}

$("img").each(function(){
    getHeight($(this),function(h){
        // what you need to do with the height value here
        alert(h);
    });
});

Ответ 6

Сделав несколько экспериментов с этим, я обнаружил, что

$(this).height();

Возвращает 0 - однако, если вы просто используете простой старый JS

this.height;

Я получаю правильную высоту изображения.

Ответ 7

У вас была такая же проблема: предварительно задайте ширину и высоту с помощью CSS или HTML.