jquery $ (window) .height () повертає висоту документа


104

Я впевнений, що я допускаю просту помилку, але я просто попереджую, $(window).height()і вона повертає те саме значення, що і $(document).height().

Я перебуваю на 13 "MBA і висота вікна моїх браузерів, коли максимізується між 780px - 820px (приблизно), але кожен раз повертає висоту вікна, ідентичну висоті документа. У кожному випадку на сайті, над яким я працюю, це понад 1000 пікс.

Що тут відбувається?

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

над яким браузером ви працюєте?
Канішка Панамальденія

Ця проблема почала з’являтися з jquery-1.8.0, старіші версії jquery зробили це правильно (навіть без набору DOCTYPE)
ralhei

Відповіді:


245

Без doctypeтегів Chrome повідомляє однакове значення для обох дзвінків.

Додавання суворого доктрипу на зразок <!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

24

У мене була така ж проблема, і за допомогою цього її вирішили.

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

1
так дивно, що я також використовую належну доктрипу. ваша внутрішня висота вирішила мою проблему! Дякую
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

дійсно виправляючи проблему (і так, у мене є вчення - перше, що стосується кожної сторінки)
код коду

1

Я думаю, що у вашому документі повинно бути достатньо місця у вікні, щоб відобразити його вміст. Це означає, що немає необхідності прокручувати вниз, щоб переглянути будь-яку частину документа. У цьому випадку висота документа буде дорівнює висоті вікна.


Документ поширюється внизу вікна на кожній сторінці.
Фрейзер

0

Ось питання та відповідь на це: Різниця між screen.availHeight та window.height ()

Зображення також є, тому ви можете побачити відмінності. Сподіваюся, це допомагає.

В основному, $(window).height()дає максимальну висоту всередині вікна веб-переглядача (вікно перегляду) і $(document).height()дає висоту документа всередині браузера. Здебільшого вони будуть точно однакові, навіть із смугами прокрутки.


0

Дійсно, якщо ми використовуємо Doctype на своїй веб-сторінці jquery (вікно) поверне висоту вікна перегляду, інакше поверне повну висоту документа.

Визначте наступний тег у верхній частині веб-сторінки: <!DOCTYPE html>


використовуйте цей тег вгорі своєї веб-сторінки: <! DOCTYPE html>
Gourav Yadav
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.