您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
navigate sites that don't support left/right arrow keys
// ==UserScript== // @name WN navigation // @namespace https://gf.qytechs.cn/en/scripts/430252-wn-navigation // @version 1.4 // @description navigate sites that don't support left/right arrow keys // @author Matt W // @match *://*/* // @grant none // ==/UserScript== (function () { "use strict"; const checkElement = (query, fuzzy, matchText, regex) => { let elements = [...document.querySelectorAll(query)]; let link = null; if (fuzzy) { link = elements.find((linkElement) => { return regex.test(linkElement.textContent) }); } else if (elements) { elements.forEach((element) => { let linkElements = element.getElementsByTagName("a"); if (linkElements) link = linkElements[0]; }); } return link; }; const getActionButton = (matchText, regex) => { let link = checkElement("a", true, matchText, regex); if (link) return link; link = checkElement(`[id^='${matchText}']`, false, matchText); if (link) return link; link = checkElement(`[class^='${matchText}']`, false, matchText); if (link) return link; }; const fallbackMatch = (matchOptions) => { let elements = [...document.querySelectorAll("a")]; let link = null; link = elements.find((linkElement) => { const textContent = linkElement.textContent.toLowerCase(); for (let i = 0; i < matchOptions.length; i++) { const option = matchOptions[i]; if (textContent.includes(option)) return true } }); return link } const nextRegex = /Next ?(Chap(ter)?)? ?(>>?)?(->)?(→)?/gi let nextButton = getActionButton("next", nextRegex); if(!nextButton) { const matchOptions = ["→"] nextButton = fallbackMatch(matchOptions); } const prevRegex = /(←)?(<-)?(<<?)? ?Prev(ious)? ?(Chap(ter)?)?/gi let prevButton = getActionButton("previous", prevRegex) || getActionButton("prev", prevRegex); if(!prevButton) { const matchOptions = ["←"] prevButton = fallbackMatch(matchOptions); } const navFunction = (keyEvent) => { switch (keyEvent.key) { case "ArrowRight": if (nextButton) nextButton.click(); break; case "ArrowLeft": if (prevButton) prevButton.click(); break; } }; document.addEventListener("keyup", navFunction); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址