jQuery $(window).height()返回文档高度


104

我确定我正在犯一个简单的错误,但我只是在发出警报$(window).height(),它返回的值与相同$(document).height()

我在13英寸的MBA上,浏览器的窗口高度在780px-820px(大约)之间达到最大值时,但是每次返回的窗口高度与文档高度相同时,在我正在使用的网站上,每种情况下超过1000像素。

这里发生了什么?

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

您正在使用什么浏览器?
2012年

这个问题开始出现在jquery-1.8.0中,较早版本的jquery正确地做到了这一点(即使没有设置DOCTYPE)
ralhei 2015年

Answers:


245

没有doctype标签,Chrome会为两个呼叫报告相同的值。

添加像这样的严格doctype <!DOCTYPE html>会使值按公告的方式工作。

doctype标签必须是非常文档中的第一件事情。例如,即使文本不呈现任何内容,您也不能在其之前输入任何文本。


11
FireFox也会执行此报告,除非您使用严格的文档类型,例如<!DOCTYPE HTML>
Tom Chiverton,2012年

同样,不正确的doctype会使twitter bootstrap scrollspy行为异常,原因与$(window).height()返回文档高度的原因相同。
nidheeshdas 2013年

3
就我而言,我Response.Write在ASP网站上的代码中后面有一个,后者在输出1HTML之前先输出一个。所以我的文档类型是正确的,但从技术上讲不是页面上的第一件事。
詹姆斯

1
我有同样的问题,但是doctype正确声明了:(
bia.migueis

1
doctype标记必须是文档中的第一件事。例如,即使它没有呈现任何内容,也不能包含任何php代码。 ”怎么可能呢?浏览器不知道服务器在运行什么,它仅接收带有HTML标记的文本文件。如果您运行的是IIS而不是Apache,该怎么办?浏览器不在乎服务器在做什么。
Sablefoste

24

我遇到了同样的问题,并使用它解决了这个问题。

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

1
很奇怪,我也使用了正确的doctype。你的身高解决了我的问题!谢谢
Martijn van Hoof

1
同样的问题-具有有效的doctype和所有文档。稍微跨平台: var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
melanie johnson

真正解决问题(是的,我有一个文档类型-每页的第一件事)
hillcode

1

我认为您的文档必须在窗口中有足够的空间来显示其内容。这意味着无需向下滚动即可查看文档的更多部分。在这种情况下,文档高度将等于窗口高度。


文档在每页窗口的底部下方扩展。
弗雷泽

0

这是一个问题和答案: screen.availHeight和window.height()之间的区别

也有照片,因此您实际上可以看到差异。希望这可以帮助。

基本上,$(window).height()为您提供浏览器窗口(视口)内部的最大高度,并$(document).height()为您提供浏览器内部文档的高度。在大多数情况下,即使使用滚动条,它们也将完全相同。


0

如果我们在网页jquery(window)上使用Doctype,它将真正返回视口高度,否则它将返回整个文档高度。

在网页顶部定义以下标记: <!DOCTYPE html>


在您的网页顶部使用此标记:<!DOCTYPE html>
Gourav Yadav
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.