mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
fix: only trigger infinitescroll on scroll end
This commit is contained in:
@@ -7,6 +7,7 @@ define('forum/infinitescroll', function () {
|
||||
var previousScrollTop = 0;
|
||||
var loadingMore = false;
|
||||
var container;
|
||||
var scrollTimeout = 0;
|
||||
|
||||
scroll.init = function (el, cb) {
|
||||
if (typeof el === 'function') {
|
||||
@@ -17,9 +18,19 @@ define('forum/infinitescroll', function () {
|
||||
container = el || $('body');
|
||||
}
|
||||
previousScrollTop = $(window).scrollTop();
|
||||
$(window).off('scroll', onScroll).on('scroll', onScroll);
|
||||
$(window).off('scroll', startScrollTimeout).on('scroll', startScrollTimeout);
|
||||
};
|
||||
|
||||
function startScrollTimeout() {
|
||||
if (scrollTimeout) {
|
||||
clearTimeout(scrollTimeout);
|
||||
}
|
||||
scrollTimeout = setTimeout(function () {
|
||||
scrollTimeout = 0;
|
||||
onScroll();
|
||||
}, 60);
|
||||
}
|
||||
|
||||
function onScroll() {
|
||||
var bsEnv = utils.findBootstrapEnvironment();
|
||||
var mobileComposerOpen = (bsEnv === 'xs' || bsEnv === 'sm') && $('html').hasClass('composing');
|
||||
@@ -34,7 +45,6 @@ define('forum/infinitescroll', function () {
|
||||
|
||||
var top = 20;
|
||||
var bottom = 80;
|
||||
|
||||
var direction = currentScrollTop > previousScrollTop ? 1 : -1;
|
||||
|
||||
if (scrollPercent < top && currentScrollTop < previousScrollTop) {
|
||||
|
||||
@@ -223,13 +223,10 @@ define('forum/topic/posts', [
|
||||
}
|
||||
|
||||
Posts.loadMorePosts = function (direction) {
|
||||
if (!components.get('topic').length || navigator.scrollActive || Posts._infiniteScrollTimeout) {
|
||||
if (!components.get('topic').length || navigator.scrollActive) {
|
||||
return;
|
||||
}
|
||||
|
||||
Posts._infiniteScrollTimeout = setTimeout(function () {
|
||||
delete Posts._infiniteScrollTimeout;
|
||||
}, 1000);
|
||||
var replies = components.get('topic').find(components.get('post').not('[data-index=0]').not('.new'));
|
||||
var afterEl = direction > 0 ? replies.last() : replies.first();
|
||||
var after = parseInt(afterEl.attr('data-index'), 10) || 0;
|
||||
|
||||
Reference in New Issue
Block a user