Почему Firefox возвращает 0 как значение $(window).height()
Мне кажется, что Firefox должен быть лучше, чтобы вернуть правильное значение при использовании $(window).height()
.
Я использую jQuery 1.8.2. Это ошибка в этой конкретной сборке? Каждый другой браузер, который я тестировал, возвращает соответствующее значение при вычислении высоты видового экрана.
Чтобы обойти это, я использовал снипп ниже, чтобы применить значение пикселя к div.
$(window).bind('cwsObjectsShown', function() {
var height = $(window).height();
if (height === 0) {
height = window.innerHeight;
}
height = height - '120';
$('#game_objects').css('height', height + 'px');
});
Ответы
Ответ 1
jQuery $(window).height() чувствителен к doctype. Попробуйте <! Doctype html >
В примечаниях к выпуску jQuery 1.8.1 говорится:
Не используйте режим Quirks! jQuery никогда не поддерживал режим Quirks, и мы не проводим никаких тестов в Quirks. Это может повлиять на значения типа $( "window" ). Height(), а результаты режима Quikks jQuery 1.8 изменились, чтобы поддерживать некоторые современные функции браузера. Большинство проблемных случаев мы видели от разработчиков, которые хотели быть в режиме Стандартов, но имели недействительный doctype или постороннюю разметку перед их тегом. Если вы сомневаетесь, используйте простой и короткий <! Doctype html > .
Например, с jQuery 1.8.2 и Firefox 16 я получаю действительный $(window).height() с doctype html, но высоту 0 с doctype html5. В Chromium 20 оба работают. (Спецификация W3C HTML5 говорит, что использовать doctype html, а не html5.)
Ответ 2
Попробуйте эту функцию:
function GetBrowserDim() {
if (window.innerHeight) {
return { w: window.innerWidth, h: window.innerHeight};
} else {
return { w: document.body.clientWidth, h: document.body.clientHeight };
}
}
Ответ 3
в моем случае мне пришлось удалить атрибуты в элементе html
<html lang="en-US" prefix="og: http://ogp.me/ns#">
изменено на
<html>
теперь я получаю правильную ширину и высоту документа
Ответ 4
$(window).height(), а также $(window).width() возвращает 0 в IE
когда в режиме совместимости. Не проверять это в FireFox, может быть одинаковым.
попробуйте вместо этого использовать $(document).height() или $(document).width().
Ответ 5
Я нашел ответ на этот странный рендер высоты по jquery в Firefox...
Я использовал class= "no-js" в своем теге html с doctype... когда я удалил это, FF вычислил правильно... поэтому я добавил этот класс с jquery, как этот $('html'). addClass ( 'нет-JS');
теперь значение во всех браузерах одинаково.
Ответ 6
Попробуйте использовать следующий код:
$(function(){
$(window).on('cwsObjectsShown', function() {
alert($(this).height());
});
});
Ответ 7
Вы должны использовать <!DOCTYPE html>
в начале, и все будет хорошо.