diff --git a/public/src/client/infinitescroll.js b/public/src/client/infinitescroll.js index 1a7171dd0c..581b257529 100644 --- a/public/src/client/infinitescroll.js +++ b/public/src/client/infinitescroll.js @@ -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) { diff --git a/public/src/client/topic/posts.js b/public/src/client/topic/posts.js index fd5e0b6437..29af0ec383 100644 --- a/public/src/client/topic/posts.js +++ b/public/src/client/topic/posts.js @@ -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;