微信读书网页版标注笔记快捷键

使用快捷键在微信阅读网页版中快捷标注,快捷发布想法。

// ==UserScript==
// @license MIT
// @name         微信读书网页版标注笔记快捷键
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  使用快捷键在微信阅读网页版中快捷标注,快捷发布想法。
// @author       Your Name
// @match        *://weread.qq.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    console.log('weread script called');

    document.onmouseup = () => {
        const toolbarContainer = document.querySelector('.reader_toolbar_container');

        if (!toolbarContainer) return; // 未出现工具栏

        let copyBtn = document.querySelector('.toolbarItem.copy'), // 复制按钮
            underlineBgBtn = document.querySelector('.toolbarItem.underlineBg'), // 马克笔按钮
            underlineHandWriteBtn = document.querySelector('.toolbarItem.underlineHandWrite'), // 波浪线按钮
            underlineStraightBtn = document.querySelector('.toolbarItem.underlineStraight'), // 直线按钮
            removeUnderlineBtn = document.querySelector('.toolbarItem.removeUnderline'), // 删除划线按钮
            reviewBtn = document.querySelector('.toolbarItem.review'), // 写想法按钮
            queryBtn = document.querySelector('.toolbarItem.query'), // 查询按钮
            submitIdeaBtn = document.querySelector('.writeReview_submit_button.wr_btn.wr_btn_Big'), // 发表想法按钮
            removeIdeaBtn = document.querySelector('.readerReviewDetail_item .actions .actionItem'), // 删除想法按钮
            closeIdeaBtn = document.querySelector('.readerWriteReviewPanel .closeButton'); // 关闭想法窗口按钮

        document.onkeydown = (e) => {
            const isCmdBtnPressed = e.metaKey, // 是否按下了 cmd 键
                  isCtrlBtnPressed = e.ctrlKey; // 是否按下了 ctrl 键

            const keyCode = e.keyCode;

            console.log('keyCode: ', keyCode);

            if (keyCode === 49) {
                if (isVisible_ReaderWriteReviewPanel()) return;
                console.log('按下 1 复制');
                copyBtn && copyBtn.click();
            } else if (keyCode === 50) {
                if (isVisible_ReaderWriteReviewPanel()) return;
                console.log('按下 2 马克笔');
                underlineBgBtn && underlineBgBtn.click();
            } else if (keyCode === 51) {
                if (isVisible_ReaderWriteReviewPanel()) return;
                console.log('按下 3 波浪线');
                underlineHandWriteBtn && underlineHandWriteBtn.click();
            } else if (keyCode === 52) {
                if (isVisible_ReaderWriteReviewPanel()) return;
                console.log('按下 4 直线');
                underlineStraightBtn && underlineStraightBtn.click();
            } else if (keyCode === 53) {
                if (isVisible_ReaderWriteReviewPanel()) return;
                console.log('按下 5 写想法');
                reviewBtn && reviewBtn.click();
                e.preventDefault();
            } else if (keyCode === 54) {
                if (isVisible_ReaderWriteReviewPanel()) return;
                console.log('按下 6 查询');
                queryBtn && queryBtn.click();
            } else if (keyCode === 8) {
                if (isVisible_ReaderWriteReviewPanel()) return;
                console.log('按下 backspace 删除记录(包括想法的删除和下划线的删除)');
                // 删除按钮在鼠标抬起的那一刻,可能还没生成
                removeUnderlineBtn = document.querySelector('.toolbarItem.removeUnderline');
                removeUnderlineBtn && removeUnderlineBtn.click();

                removeIdeaBtn = document.querySelector('.readerReviewDetail_item .actions .actionItem');
                removeIdeaBtn && removeIdeaBtn.click();
            } else if ((isCmdBtnPressed && keyCode === 13 || isCtrlBtnPressed && keyCode === 13)) {
                console.log('按下 cmd + enter | ctrl + enter 提交想法');
                submitIdeaBtn = document.querySelector('.writeReview_submit_button.wr_btn.wr_btn_Big');
                submitIdeaBtn && submitIdeaBtn.click();
            } else if (keyCode === 27) {
                if (!isVisible_ReaderWriteReviewPanel()) return;
                console.log('按下 esc 关闭想法记录窗口');
                closeIdeaBtn = document.querySelector('.readerWriteReviewPanel .closeButton'); // 关闭想法窗口按钮
                closeIdeaBtn.click();
            }
        };

        /* help info
        按下 cmd:e.metaKey === true 或 e.keyCode === 91
        按下 ctrl:e.ctrlKey === true 或 e.keyCode === 17
        按下 backspace:e.keyCode === 8
        按下 enter:e.keyCode === 13
        按下 esc:e.keyCode === 27
        按下 1:e.keyCode === 49
        按下 2:e.keyCode === 50
        按下 3:e.keyCode === 51
        按下 4:e.keyCode === 52
        按下 5:e.keyCode === 53
        按下 6:e.keyCode === 54
        */
    };

    /**
     * 记录想法的弹窗是否可见
     * @returns Boolean
     */
    function isVisible_ReaderWriteReviewPanel() {
        const dom = document.querySelector('.readerWriteReviewPanel');
        if (!dom) return false;
        return dom.style.display === 'none' ? false : true;
    }

})();