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

Javascript 如何精确获得页面的最大滚动位置?,javascript,html,dom,browser,Javascript,Html,Dom,Browser,如果我用这个公式 document_height - window_height = max_scroll_position 它的计算结果为1或0,尽管我认为它应该始终计算为0。 例如,firefox上的打开控制台,滚动至页面底部,然后在控制台上执行以下操作: ($(document).height() - $(window).height()) - $(document).scrollTop() 我得到1作为答案(记住将滚动位置保持在最底部) 但是,在jquery.com上,执行上述操作会

如果我用这个公式

document_height - window_height = max_scroll_position
它的计算结果为1或0,尽管我认为它应该始终计算为0。 例如,firefox上的打开控制台,滚动至页面底部,然后在控制台上执行以下操作:

($(document).height() - $(window).height()) - $(document).scrollTop()
我得到1作为答案(记住将滚动位置保持在最底部) 但是,在jquery.com上,执行上述操作会得到0


我遗漏了什么?

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

除非您根据其他变量的值多次快速调整其中一个或多个变量,否则此舍入错误不太可能导致用户看到的任何问题。如果必须频繁调整,则可能应该缓存调整后的数字,并使用缓存版本而不是浏览器报告的数字进行进一步计算


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

当滚动到页面底部并运行该代码(chrome)时,我得到“0”,在Firefox(内置控制台和firebug)中得到1。如果使用chrome,可能会放大。缩小到本机的缩放级别,您将得到
0
。用户可能会被放大,因此这个问题的答案可能会对此做出解释。Firefox似乎只在放大时给出偏移量(至少对我而言),因此很可能是舍入错误(这取决于您正在查看的站点的高度)。似乎是合法的-