Javascript 为什么文档高度等于窗口内部高度+;页面偏移?

Javascript 为什么文档高度等于窗口内部高度+;页面偏移?,javascript,html,Javascript,Html,我试图检测用户何时滚动到页面的最底部 我最终得到的解决方案如下 var windowHeight = "innerHeight" in window ? window.innerHeight : document.documentElement.offsetHeight; var body = document.body, html = document.documentElement; var docHeight = Math.max(body.scrollHeight, body.offse

我试图检测用户何时滚动到页面的最底部

我最终得到的解决方案如下

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
}
我不明白这为什么有效

从文档中,是视图门户的高度,是我们进行的滚动量

所以为了检测滚动到底,我是否应该检查
pageYOffset>=documentHeight


为什么我必须添加
内部高度

这与角度无关。所有浏览器都是这样工作的

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

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

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

这与角度无关。所有浏览器都是这样工作的

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

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

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