一尘不染

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

javascript

有些文档我无法获取文档的高度(将某些内容绝对定位在最底部)。另外,在这些页面上的底部填充似乎没有任何作用,但在高度会返回的页面上却没有作用。案例:

在Fandango上, jQuery的$(document).height();返回正确值
document.height返回0 document.body.scrollHeight返回0

关于平装交换:
jQuery的$(document).height();TypeError:$(document)为null
document.height返回错误的值 document.body.scrollHeight返回错误的值

注意:如果有一些窍门,我具有浏览器级别的权限。


阅读 299

收藏
2020-04-25

共1个答案

一尘不染

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

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

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

var body = document.body,
    html = document.documentElement;

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

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

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

2020-04-25