UNPKG

1.35 kBJavaScriptView Raw
1import { Current } from '@tarojs/runtime';
2
3const pageScrollFn = {};
4let pageDOM = window;
5function bindPageScroll(page, scrollEl, distance = 50) {
6 var _a;
7 const pagePath = (page ? page === null || page === void 0 ? void 0 : page.path : (_a = Current.router) === null || _a === void 0 ? void 0 : _a.path);
8 pageScrollFn[pagePath] && scrollEl.removeEventListener('scroll', pageScrollFn[pagePath]);
9 pageDOM = scrollEl;
10 let isReachBottom = false;
11 pageScrollFn[pagePath] = function () {
12 var _a;
13 (_a = page.onPageScroll) === null || _a === void 0 ? void 0 : _a.call(page, {
14 scrollTop: pageDOM instanceof Window ? window.scrollY : pageDOM.scrollTop
15 });
16 if (isReachBottom && getOffset() > distance) {
17 isReachBottom = false;
18 }
19 if (page.onReachBottom &&
20 !isReachBottom &&
21 getOffset() < distance) {
22 isReachBottom = true;
23 page.onReachBottom();
24 }
25 };
26 pageDOM.addEventListener('scroll', pageScrollFn[pagePath], false);
27}
28function getOffset() {
29 if (pageDOM instanceof Window) {
30 return document.documentElement.scrollHeight - window.scrollY - window.innerHeight;
31 }
32 else {
33 return pageDOM.scrollHeight - pageDOM.scrollTop - pageDOM.clientHeight;
34 }
35}
36
37export { bindPageScroll };