我正在对$(window).height()做一个简单的测试,我的屏幕分辨率为1366 x 768,我的值为2602。
jQuery(document).ready(function($){
var W = $(window).width();
var H = $(window).height();
console.log('W ' + W);
console.log('H ' + H);
}
输出:
W 1226 H 2602
有关如何调试此错误或我做错了什么的提示?
编辑:使用chrome和FF
我在控制台中输入:jQuery(window).height();
答案 0 :(得分:9)
这可能就像缺少或不正确的DOCTYPE(受影响的Chrome但不是IE)一样简单。
有趣的是,这甚至不是jQuery问题 - 它也会影响document.documentElement.clientHeight
。
没有doctype:
使用doctype:
<!DOCTYPE html>
我以为我的页面上有一个布局模板,但事实证明我没有 - 因此没有DOCTYPE。
答案 1 :(得分:5)
你做的一切都是正确的,而你却没有得到应有的价值。这不是jQuery应该如何表现的。
在这个页面中,我测试了你正在调用的函数,看看它们的值是什么。它们确实准确地表示了我窗口中可见页面的实际宽度和高度。这是结果。
jQuery的$(window).height()
应该显示可见的视口。请参阅jQuery's height function上的文档:
此方法还可以找到窗口和文档的高度。
$(window).height(); // returns height of browser viewport $(document).height(); // returns height of HTML document
window.height
是可以干扰的可设置值,但$(window).height()
不会受到更改的影响。
无论发生什么,无论你调用什么函数,你都不会调用jQuery的$(window).height()
实现。
使用浏览器的开发者控制台,在您调用$(window).height()
的行上放置一个断点,然后进入函数调用。当您致电$(window).height()
时,实际被叫什么?你需要找到它。
对我的强烈怀疑是你正在使用的代码库的某些部分已经完成了这个:
// Replace jQuery's height function with a better one to fix bug XYZ
$(window).height = function brandNewHeightFunction() {
return someVeryWrongValue;
};
如果是这样,当你进入高度函数时,它实际上可能不进入jQuery库的一部分,而是你自己的库的另一部分。找出必要的东西,看看你能做些什么。如果您只是删除此功能,其他依赖于此工作的东西可能会开始破坏。
检查是否发生了这种情况,无论你能做什么,以及你有哪些历史工具。你使用的是什么版本的jQuery?如果可能的话,从jQuery网站下载相同的代码,看看当你进入窗口高度函数时看到的代码与你在那里看到的相同。
重新下载jQuery并引用它。如果你的窗户高度功能突然开始工作,有人可能已经这样做了。找出为什么这是定制的。如果你修复它,取决于这种行为的其他东西可能会开始破坏。
答案 2 :(得分:1)
实际上,这是我页面上隐藏的div元素的结果。我有一个厚盒链接,可以提取这个隐藏的内容。删除它修复了jQuery.width()!
令人惊讶,不确定是否有帮助,但确实是答案。
答案 3 :(得分:1)
这里的问题相同,看起来jquery(和dom一般)在quirksmode中没有正确计算大小。
两种解决方案:
希望它有所帮助。
答案 4 :(得分:0)
根据我的经验,$(document).height();
通常是您在大多数情况下所需的。不同之处在于,如果页面大于窗口(具有滚动条),您将获得整个可滚动文档的完整高度,而$(window).height()
只能获得当前大小的选项卡的高度。
因此,如果你想要一个元素占据窗口的全部大小+下面的任何可滚动区域$(document).height
是可行的方法。
但两者肯定有一个用例。
答案 5 :(得分:-1)
jquery使用clientWidth和height返回当前显示页面的值,不包括滚动条空间有一种方法可以使其准确溢出:隐藏到您的body标签然后您将获得原始视口大小