2012-07-30 116 views
6

如果我用公式如何精确获取页面的最大滚动位置?

document_height - window_height = max_scroll_position 

它的计算结果为1或0,但我相信它应该始终评估为0 对于例如在Firefox打开控制台,滚动到页面底部上http://stackoverflow.com并做控制台以下:

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

我得到1的答案(记住滚动位置保持到最底部) 在jquery.com如何曾经,做了以上给出0

我错过了什么?

+0

我得到滚动到的底部时“0”该页面和运行该代码(铬),并在Firefox 1(在控制台和萤火虫构建)。 – travis 2012-07-30 15:35:49

+0

如果您使用Chrome,则可能会放大。缩小到原始缩放级别,您将得到'0'。 – 2012-07-30 15:37:39

+1

用户可能会放大,所以这个问题的答案应该可以解释这个问题。 – Brilliand 2012-07-30 21:05:01

回答

2

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

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

[注:我最终能得到的-1使用在OP下式的舍入误差,在250%在Firefox变焦]

相关问题