解决问题思路
滚动条距离上面的滚动高度(scrollTop) + 滚动条本身高度 = 整个页面的高度(pageHeight)
关键点:滚动条本身高度是多少
事实上,这里就有一个思想误区,人会想直接获取滚动条高度(但找不到这个API,同时滚动条表现出来的高度,也会虽内容变长变短)。
其实你只要考虑一下,为什么会出现滚动条。出现滚动条代表超出可视窗口,它的滚动距离就是超出部分,而可视窗口高度就是滚动条对应的真实高度。
//滚动条距离顶部高度 function getScrollTop() { var scrollTop=0; if(document.documentElement&&document.documentElement.scrollTop) { scrollTop=document.documentElement.scrollTop; } else if(document.body) { scrollTop= document.body.scrollTop; } return Math.ceil(scrollTop); } //滚动条本身高度:就是可视窗口高度 function getScrollBarHeight(){ let scrollBarHeight = document.documentElement.clientHeight; return Math.ceil(scrollBarHeight); } //整个页面高度 function getPageHeight() { return Math.ceil(Math.max(document.body.clientHeight,document.documentElement.scrollHeight)); } window.onscroll = function () { let top = getScrollTop(); let ch = getScrollBarHeight(); let sh = getPageHeight(); if (top + ch >= sh) { console.log("到达底部"); }else{ console.log("没有到达底部"); } }