有些文件我不能得到文件的高度(位置绝对在最底部)。此外,填充底部似乎在这些页面上不起任何作用,但在高度将返回的页面上起作用。相关案例:

http://fandango.com http://paperbackswap.com

在胡闹 jQuery的$(文档).height ();返回正确的值 文档。Height返回0 document.body.scrollHeight返回0

关于平装书互换: jQuery的$(文档).height ();TypeError: $(document)为空 文档。Height返回不正确的值 scrollheight返回错误的值

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


当前回答

这是一个非常老的问题,因此,有许多过时的答案。截至2020年,所有主要浏览器都遵守了该标准。

2020年的答案:

document.body.scrollHeight

编辑:上面没有把<body>标签的边距考虑在内。如果你的身体有边缘,使用:

document.documentElement.scrollHeight

其他回答

对于那些在按需滚动页面时遇到困难的人来说,使用功能检测,我想出了这个方法来检测在动画滚动中使用哪个功能。

问题是document.body. scrolltop和document。documentElement在所有浏览器中总是返回true。

但是,实际上您只能使用其中一种滚动文档。d.body.scrollTop用于Safari和文档。根据w3schools为所有其他元素提供documentElement(参见示例)

元素。scrollTop适用于所有浏览器,但不适用于文档级别。

    // get and test orig scroll pos in Saf and similar 
    var ORG = d.body.scrollTop; 

    // increment by 1 pixel
    d.body.scrollTop += 1;

    // get new scroll pos in Saf and similar 
    var NEW = d.body.scrollTop;

    if(ORG == NEW){
        // no change, try scroll up instead
        ORG = d.body.scrollTop;
        d.body.scrollTop -= 1;
        NEW = d.body.scrollTop;

        if(ORG == NEW){
            // still no change, use document.documentElement
            cont = dd;
        } else {
            // we measured movement, use document.body
            cont = d.body;
        }
    } else {
        // we measured movement, use document.body
        cont = d.body;
    }

我撒谎了,jQuery为两个页面返回正确的值$(document).height();…我为什么要怀疑它呢?

我不知道如何确定高度,但你可以用这个在底部放一些东西:

<html>
<head>
<title>CSS bottom test</title>
<style>
.bottom {
  position: absolute;
  bottom: 1em;
  left: 1em;
}
</style>
</head>

<body>

<p>regular body stuff.</p>

<div class='bottom'>on the bottom</div>

</body>
</html>

2017年的正确答案是:

.height document.documentElement.getBoundingClientRect ()

与document.body.scrollHeight不同的是,该方法只考虑正文边距。 它还给出了分数高度值,这在某些情况下是有用的

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

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

获得正确高度的最简单方法是获取document或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 bookmarklet进行快速测试,可以返回两个被引用页面的正确高度,代码示例也是如此。

注意,在文档准备好之前测试文档的高度总是会得到0。另外,如果你加载了更多的东西,或者用户调整了窗口的大小,你可能需要重新测试。如果您需要在加载时使用onload或文档就绪事件,否则只需在需要该数字时进行测试。