jquery $ (window) .height () возвращает высоту документа


104

Я уверен, что это простая ошибка, но я просто предупреждаю, $(window).height()и она возвращает то же значение, что и $(document).height().

У меня 13-дюймовый MBA, и моя высота окна в моих браузерах при максимальном увеличении составляет от 780 до 820 пикселей (примерно), но каждый раз он возвращает высоту окна, идентичную высоте документа. В каждом случае на сайте, над которым я работаю, это более 1000 пикселей.

Что здесь происходит?

alert($(window).height());
alert($(document).height()); 

над каким браузером вы работаете?
Канишка Панамалдения

Эта проблема начала появляться с jquery-1.8.0, более старые версии jquery сделали это правильно (даже без набора DOCTYPE)
ralhei

Ответы:


246

Без doctypeтега Chrome сообщает одно и то же значение для обоих вызовов.

Добавление строгого типа doctype <!DOCTYPE html>заставляет значения работать так, как рекламируется.

doctypeТег должен быть очень первым , что в вашем документе. Например, перед ним не может быть текста, даже если он ничего не отображает.


11
FireFox также делает это сообщение, если вы не используете строгий тип документа, например <! DOCTYPE HTML>
Том Чивертон

кроме того, неправильный doctype заставляет twitter bootstrap scrollspy вести себя странно по той же причине, что $ (window) .height () возвращает высоту документа.
nidheeshdas

3
В моем случае у меня был Response.Writeкод в моем коде на сайте ASP, который выводил 1перед любым HTML. Так что мой тип документа был правильным, но технически это не было первым делом на странице.
Джеймс

1
у меня такая же проблема, но doctype объявлен правильно :(
bia.migueis

1
« Тег doctype должен быть самым первым в вашем документе. Например, вы не можете иметь перед ним какой-либо php-код, даже если он ничего не отображает ». Как такое может быть? Браузер не знает, на чем запущен сервер, он получает только текстовый файл с разметкой HTML. Что делать, если вы используете IIS, а не Apache? Браузеру все равно, что делает сервер.
Sablefoste 08

24

У меня была такая же проблема, и это решило ее.

var w = window.innerWidth;
var h = window.innerHeight;

1
так странно, я также использую правильный doctype. ваша внутренняя высота решила мою проблему! Спасибо
Martijn van Hoof

1
Та же проблема - действующий доктайп и все такое. Чуть более кроссплатформенный: var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
melanie johnson

действительно решает проблему (и да, у меня есть doctype - первое, что нужно на каждой странице)
hillcode

1

Я думаю, что в вашем документе должно быть достаточно места в окне для отображения его содержимого. Это означает, что нет необходимости прокручивать вниз, чтобы увидеть какую-либо часть документа. В этом случае высота документа будет равна высоте окна.


Документ располагается ниже нижней части окна на каждой странице.
Fraser

0

Вот вопрос и ответ: разница между screen.availHeight и window.height ()

Также есть фотографии, так что вы можете увидеть различия. Надеюсь это поможет.

По сути, $(window).height()дайте вам максимальную высоту внутри окна браузера (области просмотра) и $(document).height()высоту документа внутри браузера. В большинстве случаев они будут точно такими же, даже с полосами прокрутки.


0

Это действительно работает, если мы используем Doctype на нашей веб-странице. Jquery (window) вернет высоту окна просмотра, иначе он вернет полную высоту документа.

Определите следующий тег в верхней части своей веб-страницы: <!DOCTYPE html>


используйте этот тег в верхней части своей веб-страницы: <! DOCTYPE html>
Гурав Ядав,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.