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

标签 javascript

某些文档我无法获得文档的高度(将某些东西绝对定位在最底部)。此外,padding-bottom on 似乎在这些页面上没有任何作用,但在高度将返回的页面上起作用。案例:

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

在范丹戈
jQuery 的 $(document).height(); 返回正确的值
document.height 返回 0
document.body.scrollHeight 返回 0

关于平装书交换:
jQuery 的 $(document).height(); TypeError: $(document) is null
document.height 返回不正确的值
document.body.scrollHeight 返回不正确的值

注意:我有浏览器级别的权限,如果那里有什么技巧的话。

最佳答案

文档大小是浏览器兼容性的噩梦,因为尽管所有浏览器都公开了 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 bookmarklet返回两个引用页面的正确高度,代码示例也是如此。

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

关于javascript - 如何使用 JavaScript 获取整个文档的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1145850/

相关文章:

javascript - 是否可以使用 href "Go Back"通过我的 ='javascript:history.go(-1)' 按钮发送变量

javascript - React - 用逗号解析用户输入的值并删除 CR/LF 和空格

javascript - 为什么 AJAX 调用不仅仅在 iOS 上工作,在其他地方都工作得很好?

javascript - 如何删除 fabric.js 中的绘图?

javascript - JS + Google People API 如何很好地用于 requestMask?

javascript - 如何测试正则表达式与单个字符的匹配?

c# - 页面方法多次回调

javascript - 如何为 flexDirection=row 设置alignSelf

javascript - 如何让div自动滚动到顶部?

javascript - 在 Javascript 中插入字符串 - 法语键盘