左右鍵翻頁 Navigate with Arrow Keys

使用左右鍵來翻上下頁

目前為 2024-09-28 提交的版本,檢視 最新版本

// ==UserScript==
// @name         左右鍵翻頁 Navigate with Arrow Keys
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  使用左右鍵來翻上下頁
// @author       沈揚傑
// @homepag      https://greasyfork.org/zh-TW/scripts/510257-左右鍵翻頁-navigate-with-arrow-keys
// @icon         https://img.ixintu.com/download/jpg/20201127/b2a55453b5000509eda6a939275250e6_512_512.jpg
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict'; // 使用嚴格模式

    // 定義包含「上一章」、「上一頁」和「上一页」文本的陣列
    const prevTexts = ['上一章', '上一頁', '上一页'];
    // 定義包含「下一章」、「下一頁」和「下一页」文本的陣列
    const nextTexts = ['下一章', '下一頁', '下一页'];

    // 使用 XPath 查找包含特定文本的按鈕
    function findButton(texts) {
        try {
            return document.evaluate(
                // 使用 XPath 表達式查找包含任意指定文本的 <a> 標籤
                `//a[contains(text(), "${texts.join('") or contains(text(), "')}")]`,
                document, // 在整個文件中查找
                null, // 不需要命名空間解析器
                XPathResult.FIRST_ORDERED_NODE_TYPE, // 返回第一個匹配的節點
                null // 不需要結果參數
            ).singleNodeValue; // 獲取單個節點的值
        } catch (error) {
            console.error('XPath 查找失敗:', error); // 如果查找失敗,輸出錯誤信息
            return null; // 返回 null
        }
    }

    // 緩存按鈕
    const prevButton = findButton(prevTexts); // 查找並緩存上一頁按鈕
    const nextButton = findButton(nextTexts); // 查找並緩存下一頁按鈕

    // 監聽鍵盤按鍵事件
    document.addEventListener('keydown', function(event) {
        switch (event.key) { // 根據按下的鍵執行不同操作
            case 'ArrowLeft': // 如果按下左箭頭鍵
                if (prevButton) prevButton.click(); // 如果找到上一頁按鈕,則點擊它
                break;
            case 'ArrowRight': // 如果按下右箭頭鍵
                if (nextButton) nextButton.click(); // 如果找到下一頁按鈕,則點擊它
                break;
        }
    });
})();