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

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

On Fandango
jQuery's $(document).height(); returns correct value
document.height returns 0
document.body.scrollHeight returns 0

On Paperback Swap:
jQuery's $(document).height(); TypeError: $(document) is null
document.height returns an incorrect value
document.body.scrollHeight returns an incorrect value

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

推荐答案

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

对于如何测试正确的高度/宽度,过go 有一个复杂的最佳实践公式.这涉及到使用文档.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.此外,如果加载了更多内容,或者用户调整了窗口大小,则可能需要重新测试.如果在加载时需要,请使用onloaddocument ready事件,否则只要在需要数字时进行测试即可.

Javascript相关问答推荐

如何在表格上拥有水平滚动条,在正文页面上拥有垂直滚动条,同时还对html表格的标题使用位置粘性?

为什么当我解析一个promise时,输出处于挂起状态?

使用useEffect,axios和useParams进行react测试

PDF工具包阿拉伯字体的反转数字

Html文件和客户端存储的相关问题,有没有可能?

将异步回调转换为异步生成器模式

在不删除代码的情况下禁用Java弹出功能WordPress

一个实体一刀VS每个实体多刀S

在渲染turbo流之后滚动到元素

如何使用抽屉屏幕及其子屏幕/组件的上下文?

React Refs不与高阶组件(HOC)中的动态生成组件一起工作

不协调嵌入图片

JavaScript -复制到剪贴板在Windows计算机上无效

如何在下一个js中更改每个标记APEXCHARTS图表的 colored颜色

使用可配置项目创建网格

如何在Java脚本中并行运行for或任意循环的每次迭代

如何将字符串拆分成单词并跟踪每个单词的索引(在原始字符串中)?

当达到高度限制时,如何裁剪图像?使用html和css

鼠标进入,每秒将图像大小减小5%

.Remove()函数不适用于MongoDB