2010-12-11 5 views
1

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

$(document).ready(function() { 
    alert($('#image').height()); 
}) 

Очень простой. Однако я смущен.
Если я нажимаю F5 я получаю следующий результат:
Firefox: 383px
IE 8: 30px
Chrome: 0px

Если я иду на эту страницу по ссылке:
Firefox: 383px
IE 8: 383px
Хром: 383px

383, очевидно, правильное значение. Но почему я получаю неправильное значение при обновлении?

ответ

3

document.ready пожары после загрузки DOM, но не обязательно после загрузки изображений и CSS. Если вы запустите этот код на window.onload, вы должны получить согласованные результаты в браузерах.

Попробуйте использовать load обработчик JQuery вместо:

$(window).load(function() { 
    alert($('#image').height()); 
}) 
+0

$ (окно) .load конечно? –

+0

Очень приятно! Я предполагаю, что изображение было кэшировано, когда я следил за ссылкой, и поэтому он смог определить размер во всех браузерах. – Anders

3

Попробуйте подождать, пока изображение не будет полностью загружен

var img = document.getElementById("image"); 
    img.onload = function() { 
    alert($('#image').height()); 
    }; 
+0

У IE есть некоторые известные проблемы с image.onload: http://stackoverflow.com/questions/198892/img-onload-doesnt-work-well-in-ie7 – Emmett

0
$(document).ready(function() { 

    $('#image').bind("load", function() { 
     alert($('#image').height()); 
    }); 

}) 
Смежные вопросы