Fix #5260
This commit is contained in:
parent
01d018510c
commit
7dd193636c
2 changed files with 18 additions and 6 deletions
|
@ -44,13 +44,21 @@ export default (opts) => ({
|
||||||
return window.scrollY <= 8;
|
return window.scrollY <= 8;
|
||||||
};
|
};
|
||||||
|
|
||||||
window.addEventListener('scroll', this.onWindowScroll, { passive: true });
|
window.addEventListener('scroll', this.onScroll, { passive: true });
|
||||||
|
} else if (opts.isContainer) {
|
||||||
|
this.isScrollTop = () => {
|
||||||
|
return this.$el.scrollTop <= 8;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.$el.addEventListener('scroll', this.onScroll, { passive: true });
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
beforeDestroy() {
|
beforeDestroy() {
|
||||||
if (opts.captureWindowScroll) {
|
if (opts.captureWindowScroll) {
|
||||||
window.removeEventListener('scroll', this.onWindowScroll);
|
window.removeEventListener('scroll', this.onScroll);
|
||||||
|
} else if (opts.isContainer) {
|
||||||
|
this.$el.removeEventListener('scroll', this.onScroll);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -152,7 +160,7 @@ export default (opts) => ({
|
||||||
this.queue = [];
|
this.queue = [];
|
||||||
},
|
},
|
||||||
|
|
||||||
onWindowScroll() {
|
onScroll() {
|
||||||
if (this.isScrollTop()) {
|
if (this.isScrollTop()) {
|
||||||
this.onTop();
|
this.onTop();
|
||||||
}
|
}
|
||||||
|
@ -163,8 +171,10 @@ export default (opts) => ({
|
||||||
// http://d.hatena.ne.jp/favril/20091105/1257403319
|
// http://d.hatena.ne.jp/favril/20091105/1257403319
|
||||||
if (this.$el.offsetHeight == 0) return;
|
if (this.$el.offsetHeight == 0) return;
|
||||||
|
|
||||||
const current = window.scrollY + window.innerHeight;
|
const bottomPosition = opts.isContainer ? this.$el.scrollHeight : document.body.offsetHeight;
|
||||||
if (current > document.body.offsetHeight - 8) this.onBottom();
|
|
||||||
|
const currentBottomPosition = opts.isContainer ? this.$el.scrollTop + this.$el.clientHeight : window.scrollY + window.innerHeight;
|
||||||
|
if (currentBottomPosition > (bottomPosition - 8)) this.onBottom();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -165,7 +165,9 @@ export default Vue.extend({
|
||||||
i18n: i18n(),
|
i18n: i18n(),
|
||||||
|
|
||||||
mixins: [
|
mixins: [
|
||||||
paging({}),
|
paging({
|
||||||
|
isContainer: true
|
||||||
|
}),
|
||||||
],
|
],
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
|
|
Loading…
Reference in a new issue