您需要先安装一个扩展,例如 篡改猴、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;
- }
- }
- });
- })();