您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
开源阅读web服务添加wasd快捷键支持
当前为
// ==UserScript== // @name 开源阅读web端快捷键 // @namespace http://tampermonkey.net/ // @version 0.1 // @description 开源阅读web服务添加wasd快捷键支持 // @author coccvo // @match http://*/vue/index.html // @icon https://raw.kkgithub.com/gedoor/legado/master/app/src/main/assets/web/favicon.ico // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; const SCROLL_FRACTION = 0.9; // 设置滚动距离为视口高度的百分比 document.addEventListener('keydown', function(e) { // 定义一个数组包含需要处理的按键 const keysToHandle = ['ArrowUp', 'ArrowDown', 'w', 's']; // 检查按键是否在需要处理的列表中 if (keysToHandle.includes(e.key)) { // 计算滚动距离 let distance = e.key === 'ArrowDown' || e.key === 's' ? window.innerHeight * SCROLL_FRACTION : -window.innerHeight * SCROLL_FRACTION; // 执行平滑滚动 if ('scrollBehavior' in document.documentElement.style) { window.scrollBy({ top: distance, left: 0, behavior: 'smooth' }); } else { window.scrollBy(0, distance); } // 阻止按键的默认行为,以允许脚本完全控制滚动(这将改变上下箭头的默认滚动行为) e.preventDefault(); } }, false); // 等待页面加载完成 window.addEventListener('load', function() { document.addEventListener('keydown', function(event) { // 获取按键代码 var keyCode = event.keyCode || event.which; // 查找包含特定文本的元素 function findElementByText(text) { var elements = document.querySelectorAll('div.tool-icon'); for (var i = 0; i < elements.length; i++) { if (elements[i].innerText.includes(text)) { return elements[i]; } } return null; } // 查找包含特定图标的元素 function findElementByIcon(icon) { var elements = document.querySelectorAll('div.tool-icon .iconfont'); for (var i = 0; i < elements.length; i++) { if (elements[i].textContent.includes(icon)) { return elements[i].parentElement; // 返回父元素以触发点击事件 } } return null; } // 检查是否按下了 'a' 键或 'd' 键 if (keyCode === 65) { // 'a' 键 var prevChapter; if (window.innerWidth < 768) { // 小屏状态 prevChapter = findElementByText('上一章'); } else { // 全屏状态 prevChapter = findElementByIcon(''); // 使用特定图标 } if (prevChapter) { prevChapter.click(); } } else if (keyCode === 68) { // 'd' 键 var nextChapter; if (window.innerWidth < 768) { // 小屏状态 nextChapter = findElementByText('下一章'); } else { // 全屏状态 nextChapter = findElementByIcon(''); // 使用特定图标 } if (nextChapter) { nextChapter.click(); } } }); }, false); })();