From 31f9b418ba3d37ae32f3c0ccda53563e08b21a5d Mon Sep 17 00:00:00 2001 From: Pierre Rudloff Date: Wed, 12 Apr 2017 23:16:44 +0200 Subject: [PATCH 1/2] Scroll to next/previous thread when pressing j/k (fixes #3327) --- js/main.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/js/main.js b/js/main.js index 556e4ed8c..98c219d78 100644 --- a/js/main.js +++ b/js/main.js @@ -322,6 +322,29 @@ } }); + $(document).keydown(function (event) { + var threads = $('.thread_level_1'); + if ((event.keyCode === 74 || event.keyCode === 75) && !$(event.target).is('textarea, input')) { + var scrollTop = $(window).scrollTop(); + if (event.keyCode === 75) { + threads = $(threads.get().reverse()); + } + threads.each(function(key, item) { + var comparison; + var top = $(item).offset().top - 100; + if (event.keyCode === 74) { + comparison = top > scrollTop + 1; + } else if (event.keyCode === 75) { + comparison = top < scrollTop - 1; + } + if (comparison) { + $('html, body').animate({ scrollTop: top }, 200); + return false; + } + }); + } + }); + // Set an event listener for infinite scroll if(typeof infinite_scroll !== 'undefined') { $(window).scroll(function(e){ From 8567113f0f4d1014098e7b16b9cd805944c67f56 Mon Sep 17 00:00:00 2001 From: Pierre Rudloff Date: Thu, 13 Apr 2017 17:20:05 +0200 Subject: [PATCH 2/2] Doc about j/k keyboard shortcuts --- doc/KeyboardShortcuts.md | 10 ++++++++++ js/main.js | 1 + 2 files changed, 11 insertions(+) create mode 100644 doc/KeyboardShortcuts.md diff --git a/doc/KeyboardShortcuts.md b/doc/KeyboardShortcuts.md new file mode 100644 index 000000000..cf783b0da --- /dev/null +++ b/doc/KeyboardShortcuts.md @@ -0,0 +1,10 @@ +Keyboard shortcuts in Friendica +======================= + +* [Home](help) + +General +------- + +* j: Scroll to next thread +* k: Scroll to previous thread diff --git a/js/main.js b/js/main.js index 98c219d78..c85aab4a2 100644 --- a/js/main.js +++ b/js/main.js @@ -322,6 +322,7 @@ } }); + // Scroll to the next/previous thread when pressing J and K $(document).keydown(function (event) { var threads = $('.thread_level_1'); if ((event.keyCode === 74 || event.keyCode === 75) && !$(event.target).is('textarea, input')) {