← All examples

JavaScript Productivity mastodon.social

Mastodon: J / K keyboard navigation

Lets you jump between timeline posts with J and K, highlighting the currently selected status.

Code to copy

// Navigate timeline posts with J / K keys
(function () {
  function posts() {
    return Array.from(document.querySelectorAll('.columns-area__panels__main article, .columns-area__panels__main .status'));
  }
  let idx = -1;
  function go(step) {
    const list = posts();
    if (!list.length) { return; }
    idx = Math.max(0, Math.min(list.length - 1, idx + step));
    const el = list[idx];
    if (el) {
      el.scrollIntoView({ behavior: 'smooth', block: 'center' });
      el.style.outline = '2px solid #6364ff';
      setTimeout(function () { el.style.outline = ''; }, 700);
    }
  }
  document.addEventListener('keydown', function (e) {
    if (e.target && /^(INPUT|TEXTAREA)$/.test(e.target.tagName)) { return; }
    if (e.target && e.target.isContentEditable) { return; }
    if (e.key === 'j') { go(1); }
    else if (e.key === 'k') { go(-1); }
  });
})();

How to use this example

  1. Copy the code with the button above.
  2. Install JustZix (2 minutes) and open the extension on the target page.
  3. Add a new rule matching that page.
  4. Paste the code into the rule's JavaScript panel and save — it runs on every page visit.

Rate this example

No ratings yet — be the first.

Does this example work?

Snippets are useless without somewhere to paste them.

JustZix takes 2 minutes to install and runs your code on every matching page. No account, no payment.

Download free See use cases