整理小红书收藏JS脚本

最近在整理小red书收藏,为减少使用鼠标频率,写了段JS脚本,在这备份下。
功能: 按下键盘E键,实现点击收藏按钮取消收藏,并退出当前弹窗
使用方式: 将以下代码复制到小red书收藏界面的控制台即可执行

document.addEventListener(
    "keydown",
    (function () {
    	 // 记录上次按键时间
		let lastPress = 0;
		// 限制300ms内不能连续触发
        const pressDelay = 300; 
        // 缓存Tribute.js实例,防止重复绑定
        const tributeInstance = new Map();

        return function (event) {
            // 避免在输入框内触发该脚本
            if (["INPUT", "TEXTAREA"].includes(event.target.tagName)) return;

            // 仅监听E/e按键,按需修改
            if (event.key.toLowerCase() !== "e") return;

            const now = Date.now();
            // 防止短时间内重复点击,否则内存占用过大
            if (now - lastPress < pressDelay) return; 
            lastPress = now;

            const element = document.querySelector("#note-page-collect-board-guide");

            if (element instanceof HTMLElement) {
                try {
                    element.click();
                    console.log("✅已点击收藏键");
                } catch (error) {
                    console.error("❌点击收藏按钮失败:", error);
                    return;
                }

                // 使用 requestIdleCallback 避免 UI 阻塞
                requestIdleCallback(() => {
                    try {
                        document.dispatchEvent(new KeyboardEvent("keyup", { key: "Escape", bubbles: true }));
                        console.log("✅ 已模拟按下ESC");
                    } catch (error) {
                        console.error("❌ESC模拟按下失败:", error);
                    }
                });

                // 处理 Tribute.js,避免重复绑定
                if (!tributeInstance.has(element)) {
                    tributeInstance.set(
                        element,
                        new Tribute({
                            collection: [
                                {
                                    trigger: "@",
                                    values: [{ key: "example", value: "示例" }],
                                },
                            ],
                        })
                    );
                }
            } else {
                console.warn("⚠️未找到收藏按钮!");
            }
        };
    })(),
    { passive: true }
);

清理了几百条后弹窗安全限制了😶
在右上角添加了一个累加按下收藏键次数的累加器

document.addEventListener(
    "keydown",
    (function () {
    	 // 记录上次按键时间
		let lastPress = 0;
		// 限制300ms内不能连续触发
        const pressDelay = 300; 
        // 缓存Tribute.js实例,防止重复绑定
        const tributeInstance = new Map();
        // 创建累加器
        let counter = 0;

        // 创建一个浮动窗口显示计数器
        const counterDisplay = document.createElement("div");
        counterDisplay.style.position = "fixed";
        counterDisplay.style.top = "10px";
        counterDisplay.style.right = "10px";
        counterDisplay.style.background = "rgba(0, 0, 0, 0.7)";
        counterDisplay.style.color = "white";
        counterDisplay.style.padding = "10px";
        counterDisplay.style.borderRadius = "5px";
        counterDisplay.style.fontSize = "16px";
        counterDisplay.style.zIndex = "9999";
        counterDisplay.textContent = `收藏键按下次数: ${counter}`;
        document.body.appendChild(counterDisplay);

        return function (event) {
            // 避免在输入框内触发该脚本
            if (["INPUT", "TEXTAREA"].includes(event.target.tagName)) return;

            // 仅监听E/e按键,按需修改
            if (event.key.toLowerCase() !== "e") return;

            const now = Date.now();
            // 防止短时间内重复点击,否则内存占用过大
            if (now - lastPress < pressDelay) return; 
            lastPress = now;

            const element = document.querySelector("#note-page-collect-board-guide");

            if (element instanceof HTMLElement) {
                try {
                    element.click();
                    console.log("✅已点击收藏键");
                    // 更新计数器
           			counter++;
            		counterDisplay.textContent = `收藏键按下次数: ${counter}`;
                } catch (error) {
                    console.error("❌点击收藏按钮失败:", error);
                    return;
                }

                // 使用 requestIdleCallback 避免 UI 阻塞
                requestIdleCallback(() => {
                    try {
                        document.dispatchEvent(new KeyboardEvent("keyup", { key: "Escape", bubbles: true }));
                        console.log("✅ 已模拟按下ESC");
                    } catch (error) {
                        console.error("❌ESC模拟按下失败:", error);
                    }
                });

                // 处理 Tribute.js,避免重复绑定
                if (!tributeInstance.has(element)) {
                    tributeInstance.set(
                        element,
                        new Tribute({
                            collection: [
                                {
                                    trigger: "@",
                                    values: [{ key: "example", value: "示例" }],
                                },
                            ],
                        })
                    );
                }
            } else {
                console.warn("⚠️未找到收藏按钮!");
            }
        };
    })(),
    { passive: true }
);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值