Instagram: Arrow Keys for Multi-Image Posts

Makes right/left keys navigate next/previous images in multi-image posts, as well as to adjacent posts. Holding shift, right/left jumps directly between posts. Esc key closes posts.

目前为 2024-02-03 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name Instagram: Arrow Keys for Multi-Image Posts
  3. // @description Makes right/left keys navigate next/previous images in multi-image posts, as well as to adjacent posts. Holding shift, right/left jumps directly between posts. Esc key closes posts.
  4. // @match https://www.instagram.com/*
  5. // @version 0.5
  6. // @author mica
  7. // @namespace greasyfork.org/users/12559
  8. // @license MIT
  9. // ==/UserScript==
  10.  
  11.  
  12. const nextImg = () => document.querySelector('article button[aria-label="Next"]');
  13. const prevImg = () => document.querySelector('article button[aria-label="Go back"]');
  14. const nextPgImg = () => document.querySelector('button[aria-label="Next"]');
  15. const prevPgImg = () => document.querySelector('button[aria-label="Go back"]');
  16. const nextPost = () => document.querySelector('svg[aria-label="Next"]');
  17. const prevPost = () => document.querySelector('svg[aria-label="Go back"]');
  18. const closePost = () => document.querySelector('svg[aria-label="Close"]');
  19.  
  20. document.addEventListener('keydown', (event) => {
  21. event.stopPropagation();
  22. switch (true) {
  23. case (event.shiftKey && event.key == 'ArrowRight'):
  24. nextPost().parentElement.click();
  25. break;
  26. case (event.key == 'ArrowRight'):
  27. if (nextImg()) {
  28. nextImg().click();
  29. } else if (nextPost()) {
  30. nextPost().parentElement.click();
  31. } else {
  32. nextPgImg().click();
  33. }
  34. break;
  35. case (event.shiftKey && event.key == 'ArrowLeft'):
  36. prevPost().parentElement.click();
  37. break;
  38. case (event.key == 'ArrowLeft'):
  39. if (prevImg()) {
  40. prevImg().click();
  41. } else if (prevPost()) {
  42. prevPost().parentElement.click();
  43. } else {
  44. prevPgImg().click();
  45. }
  46. break;
  47. case (event.key == 'Escape'):
  48. closePost().parentElement.click();
  49. break;
  50. }
  51. }, true);