您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
hjkl navigation within WeebCentral's reader. <Alt-c> to show reader's settings. <Alt-g> to show page select dialog.
- // ==UserScript==
- //
- // @name VimKeys Navigation for WeebCentral
- // @namespace Violentmonkey Scripts
- // @match https://weebcentral.com/chapters/*
- // @grant none
- // @version 0.2
- // @author Sadist
- // @license MIT
- // @description hjkl navigation within WeebCentral's reader. <Alt-c> to show reader's settings. <Alt-g> to show page select dialog.
- // ==/UserScript==
- const scrollLines = 35;
- const ratioExp = 2.6;
- const keyList = ['g','c','h','j','k','l','f'];
- function isInputActive() {
- return (document.activeElement.tagName === "INPUT");
- }
- function noModifierKey(event) {
- return (!((event.altKey) || (event.ctrlKey) || (event.metaKey) || (event.shiftKey)));
- }
- document.addEventListener("keydown", (event) => {
- if ( isInputActive() ) {
- return;
- }
- if ( !keyList.includes(event.key) ) {
- console.log('key not in list')
- return;
- }
- if ( noModifierKey(event) ) {
- switch (event.key) {
- case 'h':
- document.getElementById('nav-top').querySelector('div > button:nth-child(4)').click();
- break;
- case 'l':
- document.getElementById('nav-top').querySelector('div > button:nth-child(8)').click();
- break;
- case 'k':
- scrollByLines(-scrollLines * Math.pow(window.devicePixelRatio, ratioExp));
- break;
- case 'j':
- scrollByLines(scrollLines * Math.pow(window.devicePixelRatio, ratioExp));
- break;
- }
- return;
- }
- if ( (event.key === 'g') && (event.altKey) ) {
- document.getElementById('nav-top').querySelector('div > button:nth-child(6)').click();
- return;
- }
- if ( (event.key === 'c') && (event.altKey) ) {
- preference_modal.showModal()
- return;
- }
- if ( (event.key === 'f') && (event.ctrlKey) ) {
- event.preventDefault();
- document.getElementById('quick-search-input').focus();
- return;
- }
- });