如何精确获取页面的最大滚动位置?

ran*_*ane 6 html javascript browser dom

如果我使用公式

document_height - window_height = max_scroll_position
Run Code Online (Sandbox Code Playgroud)

它评估为1或0,虽然我认为它应该一直评估为0.例如,在firefox Open控制台上,滚动到http://stackoverflow.com页面底部并在控制台上执行以下操作:

($(document).height() - $(window).height()) - $(document).scrollTop()
Run Code Online (Sandbox Code Playgroud)

我得到1作为答案(记得将滚动位置保持在最底部)然而,在jquery.com上,做上面的给出0

我错过了什么?

Bri*_*and 2

经过一些测试,多出的 1 个像素肯定是舍入误差。所有这三个变量(文档高度、窗口高度和滚动顶部)都保持为更高的内部精度或未缩放的浏览器窗口的比例,然后根据需要进行缩放和舍入以满足 JavaScript 属性的要求。在某些边缘情况下(随着缩放比例的增加,这种情况变得更有可能发生),这些值会以某种方式舍入,从而产生您所看到的不一致结果。

除非您根据其他变量的值快速多次调整其中一个变量,否则这种舍入误差不太可能导致用户可见的任何问题。如果您必须经常调整它们,那么您可能应该缓存调整后的数字,并使用缓存的版本而不是浏览器报告的数字进行进一步计算。

[注:我最终能够使用 OP 中的公式,在 Firefox 中缩放 250% 时得到 -1 的舍入误差。]