2016-06-21 79 views
0

我试图检测用户何时滚动到页面的最底部。为什么文档高度等于窗口内部高度+ pageYoffset?

,我结束了在以下

var windowHeight = "innerHeight" in window ? window.innerHeight : document.documentElement.offsetHeight; 
var body = document.body, html = document.documentElement; 
var docHeight = Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight); 
var windowBottom = windowHeight + window.pageYOffset; 

if (windowBottom >= docHeight) { 
    // Bottom is reached 
} 

我很困惑,为什么这个工程

从文档,innerheight是认为门户的高度解决方案,与pageYoffset是量滚动我们制作。

因此,为了检测滚动到底部,我不应该检查,如果pageYOffset >= documentHeight

为什么我必须添加innerheight

回答

1

这与Angular无关。这就是所有浏览器的工作原理。

您的pageYOffset永远不会比文档高度大,因为它代表视口的顶部。为使pageYOffset等于文档高度,您必须滚动页面末尾。

最大pageYOffset可以是docHeight - window.innerHeight。所以你的支票可能是:

if (pageYOffset >= docHeight - window.innerHeight) { 
    // Bottom is reached 
} 
相关问题