页面到达底部,加载更多
Posted ruthless
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了页面到达底部,加载更多相关的知识,希望对你有一定的参考价值。
loadMore = (element, callback) => {
let windowHeight = window.screen.height;
let height;
let setTop;
let paddingBottom;
let marginBottom;
let requestFram;
let oldScrollTop;
document.body.addEventListener(‘scroll‘,() => {
loadMore();
}, false)
//运动开始时获取元素 高度 和 offseTop, pading, margin
element.addEventListener(‘touchstart‘,() => {
height = element.offsetHeight;
setTop = element.offsetTop;
paddingBottom = getStyle(element,‘paddingBottom‘);
marginBottom = getStyle(element,‘marginBottom‘);
},{passive: true})
//运动过程中保持监听 scrollTop 的值判断是否到达底部
element.addEventListener(‘touchmove‘,() => {
loadMore();
},{passive: true})
//运动结束时判断是否有惯性运动,惯性运动结束判断是非到达底部
element.addEventListener(‘touchend‘,() => {
oldScrollTop = document.body.scrollTop;
moveEnd();
},{passive: true})
const moveEnd = () => {
requestFram = requestAnimationFrame(() => {
if (document.body.scrollTop != oldScrollTop) {
oldScrollTop = document.body.scrollTop;
loadMore();
moveEnd();
}else{
cancelAnimationFrame(requestFram);
//为了防止鼠标抬起时已经渲染好数据从而导致重获取数据,应该重新获取dom高度
height = element.offsetHeight;
loadMore();
}
})
}
const loadMore = () => {
if (document.body.scrollTop + windowHeight >= height + setTop + paddingBottom + marginBottom) {
callback();
}
}
}
以上是关于页面到达底部,加载更多的主要内容,如果未能解决你的问题,请参考以下文章
当我们到达列表底部时,React Native FlatList 加载更多
Android - 我怎么知道gridview何时到达底部?