diff --git a/public/src/client/topic.js b/public/src/client/topic.js index 8fb93e8c40..db5b7e0113 100644 --- a/public/src/client/topic.js +++ b/public/src/client/topic.js @@ -26,6 +26,7 @@ define('forum/topic', [ app.removeAlert('bookmark'); events.removeListeners(); + $(window).off('keydown', onKeyDown); } if (!data.url.startsWith('topic/')) { @@ -58,11 +59,12 @@ define('forum/topic', [ handleBookmark(tid); + handleKeys(); + navigator.init('[component="post"]', ajaxify.data.postcount, Topic.toTop, Topic.toBottom, Topic.navigatorCallback, Topic.calculateIndex); $(window).on('scroll', updateTopicTitle); - $(window).trigger('action:topic.loaded'); if (app.user.uid) { socket.emit('topics.enter', tid, function(err, data) { @@ -74,8 +76,26 @@ define('forum/topic', [ } handleTopicSearch(); + + $(window).trigger('action:topic.loaded'); }; + function handleKeys() { + if (!config.usePagination) { + $(window).off('keydown', onKeyDown).on('keydown', onKeyDown); + } + } + + function onKeyDown(ev) { + if (ev.which === 36) { // home key + navigator.scrollTop(0); + return false; + } else if (ev.which === 35) { // end key + Topic.toBottom(); + return false; + } + } + function handleTopicSearch() { require(['search', 'mousetrap'], function(search, Mousetrap) { $('.topic-search') @@ -182,7 +202,7 @@ define('forum/topic', [ function updateTopicTitle() { - if($(window).scrollTop() > 50) { + if ($(window).scrollTop() > 50) { components.get('navbar/title').find('span').text(ajaxify.data.title).show(); } else { components.get('navbar/title').find('span').text('').hide();