首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用JavaScript获取整个文档的高度?

如何用JavaScript获取整个文档的高度?
EN

Stack Overflow用户
提问于 2009-07-17 21:49:39
回答 13查看 565.5K关注 0票数 398

有些文档我无法获得文档的高度(将某些内容绝对放在最底部)。此外,底部填充似乎在这些页面上不起作用,但在高度将返回的页面上起作用。一个或多个例子:

http://fandango.com

http://paperbackswap.com

关于Fandango

jQuery的$(document).height();返回正确的值

document.height返回0

document.body.scrollHeight返回0

关于平装互换:

jQuery的$(document).height(); TypeError:$(document)为空

document.height返回不正确的值

document.body.scrollHeight返回不正确的值

注意:我有浏览器级别的权限,如果有一些技巧的话。

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2009-07-18 15:11:39

文档大小是浏览器兼容性的噩梦,因为尽管所有浏览器都公开clientHeight和scrollHeight属性,但它们并不都同意值的计算方式。

对于如何测试正确的高度/宽度,过去有一个复杂的最佳实践公式。这涉及到使用document.documentElement属性(如果可用)或依赖于文档属性等。

获得正确高度的最简单方法是获取在document或documentElement上找到的所有高度值,并使用最大的高度值。这基本上就是jQuery所做的:

代码语言:javascript
运行
复制
var body = document.body,
    html = document.documentElement;

var height = Math.max( body.scrollHeight, body.offsetHeight, 
                       html.clientHeight, html.scrollHeight, html.offsetHeight );

使用Firebug + jQuery bookmarklet快速测试将返回两个引用页面的正确高度,代码示例也是如此。

请注意,在文档准备就绪之前测试文档的高度将始终得到0。此外,如果您加载了更多内容,或者用户调整了窗口大小,则可能需要重新测试。如果在加载时需要,请使用onloaddocument ready事件,否则只需在需要该数字时进行测试。

票数 753
EN

Stack Overflow用户

发布于 2017-05-20 03:33:56

这是一个非常古老的问题,因此,有许多过时的答案。自2020年起,所有major browsers have adhered to the standard

2020年的答案:

代码语言:javascript
运行
复制
document.body.scrollHeight

编辑:上面的代码没有考虑到<body>标签上的边距。如果您的正文有页边距,请使用:

代码语言:javascript
运行
复制
document.documentElement.scrollHeight
票数 331
EN

Stack Overflow用户

发布于 2013-02-07 13:37:26

您甚至可以使用以下命令:

代码语言:javascript
运行
复制
var B = document.body,
    H = document.documentElement,
    height

if (typeof document.height !== 'undefined') {
    height = document.height // For webkit browsers
} else {
    height = Math.max( B.scrollHeight, B.offsetHeight,H.clientHeight, H.scrollHeight, H.offsetHeight );
}

或者以一种更jQuery的方式(因为正如您所说的jQuery不会说谎) :)

代码语言:javascript
运行
复制
Math.max($(document).height(), $(window).height())
票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1145850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档