开源阅读web端快捷键

开源阅读web服务添加wasd快捷键支持

目前為 2024-05-23 提交的版本,檢視 最新版本

// ==UserScript==
// @name         开源阅读web端快捷键
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  开源阅读web服务添加wasd快捷键支持
// @author       coccvo
// @match        http://*/vue/index.html
// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAOVBMVEX////29/fu7u7o5+ff39/W1tfnycXvyKzNzc7pu6XCwsLjppaop6eVlZWJiYl3d3dmZmZZWVlPT08qay0aAAABTklEQVR42pWQW47DIAxFwYaGJvi5/8VOzKRMafozR4oUwfG1TfoP0DoxU2+QvlFJ/UKp3qvZ/A3jj5Sm/oG29MZubmyqYu4qpmzmtr/Vm7sIGwu7G6l2NXebGRD5xCwsFKYyxY8rXAJ7CCTGTJEgTBqC87WfDUH6b6GSSJdxZjUFIYdASjwE407mMwLUA1Y3IXG3zuTCHijGCv6J+SRW7T4RY4slfNLHCBM1CUE8mEOwDW59BpxTAsgZAEvbO2t4Qv14btuGcXom5DwELKXU1lV3BNxOQgBchFpr21scP4NICAEWoeEQjuOYwtLiEo4gBAgB7gln/RBKTidDgCHMhAc+DowOQcZXi5nwQIDzqzkNMLotCRBgwXRRcJnhAmt6kQsuW4yQEg2mUcuSgDDvZ0b7mwEjPjZcgPP2SsBTxXQjh7Lv9aRATl8Z7wHr7Q+/8x1ulTnfVgAAAABJRU5ErkJggg==
// @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);

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址