如何精确地获得页面的最大滚动位置
How to get the maximum scroll position of a page precisely?
如果我使用公式
document_height - window_height = max_scroll_position
它的求值结果为1或0,尽管我认为它应该始终求值为0。例如,在firefox打开控制台,滚动到页面底部http://stackoverflow.com并在控制台上执行以下操作:
($(document).height() - $(window).height()) - $(document).scrollTop()
我得到1作为答案(记得将滚动位置保持在最底部)然而,在jquery.com上,执行上述操作会得到0
我错过了什么?
经过一些测试,额外的1个像素肯定是舍入误差。所有这三个变量(文档高度、窗口高度和滚动顶部)都保持较高的内部精度或未缩放浏览器窗口的比例,然后根据需要进行缩放和取整,以满足JavaScript属性的要求。在某些边缘情况下,随着缩放比的增加,这些值会以一种产生不一致结果的方式进行舍入,这种情况变得更可能发生。
除非您根据其他变量的值多次快速调整其中一个或多个变量,否则这种舍入误差不太可能导致用户看到任何问题。如果你必须经常调整它们,那么你可能应该缓存调整后的数字,并使用缓存的版本而不是浏览器报告的数字进行进一步计算。
[注意:我最终能够使用OP中的公式获得-1的舍入误差,在Firefox中缩放250%。]
相关文章:
- 有没有一种方法可以直接从cordova获得滚动位置
- 根据滚动位置动态更改href
- 是否可以使用flexbox显示模型设置元素的滚动位置
- 浏览器持续滚动位置
- Sammy.js缓存和滚动位置时,返回历史
- PHP保持滚动位置
- 按下后退按钮时,如何保持可滚动区域的滚动位置
- 滚动位置 (scrollTop) 硬件是否在浏览器中加速
- 在 React 中创建滚动位置指标
- 关闭移动菜单后恢复滚动位置
- 检测可滚动元素内的滚动位置
- 如何在反应性呈现新帖子时保持滚动位置
- UI 路由器 - 在状态之间转换时记住滚动位置
- 单击下拉列表时保持滚动位置(javascript)
- 保留选项后的滚动位置(单击时)
- js-scrollToEl获取滚动位置
- Backbone.js路由和滚动位置
- 如何更改页眉'的底部边框颜色取决于滚动位置
- 如何精确地获得页面的最大滚动位置
- 导航栏固定底部位置,当到达滚动位置时切换到静态