如何在不使用jquery的情况下获取文档的高度和宽度

IT技术 javascript
2021-03-17 12:34:42

如何获得纯文档的高度和宽度 即不使用 .
我知道$(document).height()$(document).width(),但我想在.

我的意思是页面的高度和宽度。

6个回答
var height = document.body.clientHeight;
var width = document.body.clientWidth;

检查: 这篇文章以获得更好的解释。

它似乎是跨浏览器的
2021-04-23 12:34:42
这不是跨浏览器。你应该在发布之前测试过它。
2021-04-27 12:34:42
如果网站有边框,它会使用此解决方案而不是 jQuery 解决方案去除宽度。不太可能是身体的边界,但值得了解。window.innerWidth解决这个
2021-04-30 12:34:42
这将返回浏览器窗口的高度(如果您调整浏览器的高度会发生变化),而不是内容/网页的高度。
2021-05-10 12:34:42
@Iwazaru 感谢您指出这一点。看起来这个 4 年前的回复不是防弹的 :)
2021-05-16 12:34:42

即使在http://www.howtocreate.co.uk/tutorials/javascript/browserwindow上给出的最后一个例子也不适用于 Quirks 模式。比我想象的更容易找到,这似乎是解决方案(从最新的 jquery 代码中提取):

Math.max(
    document.documentElement["clientWidth"],
    document.body["scrollWidth"],
    document.documentElement["scrollWidth"],
    document.body["offsetWidth"],
    document.documentElement["offsetWidth"]
);

只需将“高度”替换为“宽度”即可获得高度。

@StayCool 似乎最新的 jQuery 仍在使用这种方法来计算文档高度/宽度,它给出的结果与$(document).width(). 也许您正在追求$(window).width()纯 JS 中仅document.documentElement["clientWidth"]在现代浏览器上才有的东西
2021-04-21 12:34:42
clientWidth 的问题是它只能查看。scrollWidth 包括从屏幕上泄漏的东西。至少,我在 2019 年的 Chrome 实验中是这样。
2021-04-24 12:34:42
这应该是正确答案。clientWidth 并不总是具有正确的值。
2021-05-13 12:34:42

这是一个跨浏览器的解决方案:

var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
这是一件安全而准确的事情
2021-04-29 12:34:42
这是返回窗口的高度和宽度,而不是文档的高度和宽度
2021-05-14 12:34:42

您应该使用getBoundingClientRect它,因为它通常可以跨浏览器工作,在边界矩形上为您提供亚像素精度

elem.getBoundingClientRect()
当我在 document.body 上使用它时,它返回的高度为 0
2021-04-19 12:34:42
可能是因为您的 body 的高度为 0。如果您不更改其显示类型,默认情况下就是这种情况。在 DOM 检查器中检查它。
2021-04-27 12:34:42
对于那些想知道支持的人:caniuse.com/#feat=getboundingclientrect
2021-05-10 12:34:42

无需 jQuery 即可获取文档大小

document.documentElement.clientWidth
document.documentElement.clientHeight

如果您需要屏幕尺寸,请使用它

screen.width
screen.height