您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add CTRL+ArrowLeft and CTRL+ArrowRight for generic next/previous page. It will click the last found link/button whose text starts/ends with e.g. "Next", "Prev", or "Previous".
当前为
// ==UserScript== // @name Add Keyboard Shortcut for Generic Next/Previous Page // @namespace AddKeyboardShortcutForGenericNextPreviousPage // @version 1.0.5 // @license GNU AGPLv3 // @author jcunews // @description Add CTRL+ArrowLeft and CTRL+ArrowRight for generic next/previous page. It will click the last found link/button whose text starts/ends with e.g. "Next", "Prev", or "Previous". // @include *://*/* // @grant none // ==/UserScript== /* The link/button text more specifically, are those which starts with (non case sesitive) "Next", "Prev", "Previous"; or ends with "Prev", "Previous", "Next". e.g. "Next", "> Next", "Next Page", "Prev", "< Prev", "< Previous", etc. but not "< Prev Page" because the word "prev" or "previous" is not at the start/end of text. This script doesn't take into account of links whose contents is an image rather than text, or whose text is a CSS text contents. */ (function(rxPrev, rxNext) { rxPrevious = /^prev(ious)?\b|\bprev(ious)?$/i; rxNext = /^next\b|\bnext$/i; addEventListener("keydown", function(ev) { function clickLink(rx, e, i, r) { e = document.querySelectorAll('a,button,input[type="button"],input[type="submit"]'); for (i = e.length-1; i >= 0; i--) { if ( ((e[i].tagName === "A") && rx.test(e[i].getAttribute("rel"))) || ((e[i].tagName === "INPUT") && rx.test(e[i].getAttribute("value"))) || ((e[i].tagName !== "INPUT") && rx.test(e[i].textContent.trim())) ) { ev.preventDefault(); e[i].click(); return true; } } return false; } if (ev.ctrlKey && !ev.altKey && !ev.shiftKey) { if (document.activeElement && ( (/^(INPUT|TEXTAREA)$/).test(document.activeElement.tagName) || document.activeElement.isContentEditable)) return; switch (ev.key) { case "ArrowLeft": //previous if (clickLink(rxPrevious)) return; break; case "ArrowRight": //next if (clickLink(rxNext)) return; break; } } }); })();