jQuery(窗口).height不准确

Alx*_*ejo 11 jquery

我正在对$(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);

}
Run Code Online (Sandbox Code Playgroud)

输出:

W 1226 H 2602

有关如何调试此错误或我做错了什么的提示?

编辑:使用铬和FF

我在控制台中输入这个:jQuery(window).height();

Sim*_*ver 9

这可以像缺少或不正确的DOCTYPE一样简单(受影响的Chrome但不是IE).

有趣的是,这甚至不是一个jQuery问题 - 它document.documentElement.clientHeight也会影响.

没有doctype:

在此输入图像描述

使用doctype:

<!DOCTYPE html>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我以为我的页面上有一个布局模板,但事实证明我没有 - 因此没有DOCTYPE.


dop*_*ner 5

你做的一切都是正确的,而你却没有得到应有的价值.这不是jQuery应该如何表现的.

在这个页面中,我测试了你正在调用的函数,看看它们的值是什么.它们确实准确地表示了我窗口中可见页面的实际宽度和高度.这是结果.

Chrome,使用标准的Dev控制台

一些调用jQuery中的窗口宽度和高度,返回屏幕上像素的正确结果

Firefox,Firebug

一些调用jQuery中的窗口宽度和高度,返回屏幕上像素的正确结果

你最终会出现问题

jQuery $(window).height()应该显示可见的视口.查看有关jQuery高度函数的文档:

此方法还能够找到窗口和文档的高度.

$(window).height(); // returns height of browser viewport
$(document).height(); // returns height of HTML document 
Run Code Online (Sandbox Code Playgroud)

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;
};
Run Code Online (Sandbox Code Playgroud)

如果是这样,当你进入高度函数时,它实际上可能不会进入jQuery库的一部分,而是进入你自己的库的另一部分.找出必要的东西,看看你能做些什么.如果你只是删除这个功能,其他东西取决于它以这种方式工作可能会开始打破.

有人走了,修改/定制了你的jQuery库吗?

检查是否发生了这种情况,无论你能做什么,以及你有哪些历史工具.你使用的是什么版本的jQuery?如果可能的话,从jQuery站点下载相同的代码,并看到当你进入窗口高度函数时看到的代码与你在那里看到的相同.

重新下载jQuery并引用它.如果你的窗户高度功能突然开始工作,有人可能已经这样做了.找出为什么这是定制的.如果你修复它,取决于这种行为的其他东西可能会开始破坏.


Alx*_*ejo 1

实际上,这是我的页面上隐藏的 div 元素的结果。我有一个厚盒链接可以拉出这个隐藏的内容。删除这个修复了 jQuery.width()!

令人惊讶的是,不确定是否有帮助,但确实是答案。