js实现上拉加载更多

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/**
* 获取滚动条的位置
*
* @returns {number}
*/
function getScrollTop() {
var scrollTop = 0;
if (document.documentElement && document.documentElement.scrollTop) {
scrollTop = document.documentElement.scrollTop;
} else if (document.body) {
scrollTop = document.body.scrollTop;
}
return scrollTop;
}

/**
* 获取当前可视范围的高度
*
* @returns {number}
*/
function getClientHeight() {
var clientHeight = 0;
if (document.body.clientHeight && document.documentElement.clientHeight) {
clientHeight = Math.min(document.body.clientHeight, document.documentElement.clientHeight);
} else {
clientHeight = Math.max(document.body.clientHeight, document.documentElement.clientHeight);
}
return clientHeight;
}

/**
* 获取文档完整的高度
*
* @returns {number}
*/
function getScrollHeight() {
return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
}

/**
* 是否还有更多内容
*/
var hasMore = true;

/**
* 上拉加载更多事件
*/
window.onscroll = function () {
if (hasMore && getScrollTop() + getClientHeight() === getScrollHeight()) {
console.log("加载更多...");
}
};

当没有更多内容时,把hasMore置为false,否则会一直去尝试加载更多