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

时间:2012-07-30 15:28:15

标签: javascript html dom browser

如果我使用公式

document_height - window_height = max_scroll_position

它评估为1或0,但我认为它应该始终评估为0。 例如, on firefox 打开控制台,滚动到http://stackoverflow.com页面底部并在控制台上执行以下操作:

($(document).height() - $(window).height()) - $(document).scrollTop()

我得到1作为答案(记得将滚动位置保持在最底层) 但是在jquery.com上,执行上述操作会得到0

我错过了什么?

1 个答案:

答案 0 :(得分:2)

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

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

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