您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Bind arrow keys (left/right) to Previous/Next Chapter links
- // ==UserScript==
- // @name WebNovel Nav Arrows
- // @description Bind arrow keys (left/right) to Previous/Next Chapter links
- // @version 1.1.2
- // @author PixelTech
- // @license MIT
- // @namespace https://greasyfork.org/en/scripts/406139-webnovel-nav-arrows
- // @match *://*/*
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- var Key = {
- LEFT: "ArrowLeft",
- RIGHT: "ArrowRight"
- };
- var prev_link, next_link;
- var host = window.location.host;
- var pathname = window.location.pathname;
- var path = pathname.substring(0,pathname.lastIndexOf("/"));
- var subdomain = host.split ('.')[1];
- if (subdomain.length <= 3) {
- var subdomain = host.split('.')[0]
- }
- // For Debug
- console.log("WebNovel Nav Arrows --- Detected Host: " + host);
- console.log("WebNovel Nav Arrows --- Subdomain Match: " + subdomain);
- console.log("WebNovel Nav Arrows --- Pathname Match: " + path);
- if (subdomain.includes("wuxiaworld")) {
- var l = document.querySelectorAll("next > a");
- var i = l.length;
- for (i = 0; i < l.length; i++) {
- if (String(l[i]).includes(path)) {
- next_link = l[i];
- console.log("WebNovel Nav Arrows --- Next Link: " + next_link); // For Debug
- }
- }
- var l = document.querySelectorAll("prev > a");
- var i = l.length;
- for (i = 0; i < l.length; i++) {
- if (String(l[i]).includes(path)) {
- prev_link = l[i];
- console.log("WebNovel Nav Arrows --- Prev Link: " + prev_link); // For Debug
- }
- }
- }
- if (!subdomain.includes("wuxiaworld")) {
- var l = document.getElementsByTagName('a'); //Find all links
- var i = l.length;
- for (i = 0; i < l.length; i++) {
- if ((l[i].innerHTML.match(/Next*/) || l[i].innerHTML.match(/NEXT*/)) && String(l[i]).includes(path)) { //Match iterations that contain Next* IF that iteration includes the matching domain (helps with redirected WordPress sites)
- next_link = l[i];
- console.log("WebNovel Nav Arrows --- Next Link: " + next_link); // For Debug
- }
- if ((l[i].innerHTML.match(/Prev*/) || l[i].innerHTML.match(/PREV*/) || l[i].innerHTML.match(/Last*/)) && String(l[i]).includes(path)) { //Match iterations that contain Prev* or Last* IF that iteration includes the matching domain (helps with redirected WordPress sites)
- prev_link = l[i];
- console.log("WebNovel Nav Arrows --- Previous Link: " + prev_link); // For Debug
- }
- }
- }
- //-- Should override any keybinds set by site or browser
- function handleKeyboardEvent(event) {
- switch (event.key){
- case Key.LEFT:
- prev_link.click();
- break;
- case Key.RIGHT:
- next_link.click();
- break;
- default:
- break;
- }
- }
- document.addEventListener('keydown', handleKeyboardEvent, true); //
- })();