【哔哩哔哩】按键禁用

白嫖万岁

目前为 2024-03-24 提交的版本。查看 最新版本

// ==UserScript==
// @name         【哔哩哔哩】按键禁用
// @namespace    http://tampermonkey.net/
// @version      0.1.0
// @description  白嫖万岁
// @author       AkagiYui
// @license      MIT
// @match        https://www.bilibili.com/video/*
// @match        https://www.bilibili.com/list/watchlater*
// @grant        GM_registerMenuCommand
// @grant        GM_unregisterMenuCommand
// @grant        GM_setValue
// @grant        GM_getValue
// @run-at       document-start
// ==/UserScript==

/******/ (() => { // webpackBootstrap
var __webpack_exports__ = {};
(function () {
    "use strict";
    // 目标按键
    var keysInfo = [
        { name: "w", description: "投币" },
        { name: "m", description: "静音" },
    ];
    // 读取配置,是否阻止特定按键
    var keysConfig = {};
    keysInfo.forEach(function (key) {
        keysConfig[key.name] = GM_getValue("block".concat(key.name.toUpperCase()), true);
    });
    // 遍历keyConfig对象,注册(不可用)菜单命令
    var menuIds = [];
    function registerMenuCommand() {
        // 删除之前注册(不可用)的菜单命令
        menuIds.forEach(function (id) {
            GM_unregisterMenuCommand(id);
        });
        // 删除之前注册(不可用)的id
        menuIds = [];
        keysInfo.forEach(function (key) {
            var commandName = keysConfig[key.name] ? "✅" : "❌";
            commandName += " \u6309\u952E ".concat(key.name, " - ").concat(key.description);
            var id = GM_registerMenuCommand(commandName, function () {
                updateConfig(key.name, !keysConfig[key.name]);
                registerMenuCommand();
            });
            menuIds.push(id);
        });
    }
    // 更新配置函数
    function updateConfig(key, value) {
        keysConfig[key] = value;
        GM_setValue("block".concat(key.toUpperCase()), value);
    }
    // 阻止特定按键的函数
    function preventCertainKeys(e) {
        if (keysConfig[e.key.toLowerCase()]) {
            e.stopPropagation();
            e.preventDefault();
        }
    }
    // 覆盖原生的 addEventListener 方法来过滤 'keydown' 事件
    var originalAddEventListener = EventTarget.prototype.addEventListener;
    EventTarget.prototype.addEventListener = function (type, listener, options) {
        if (type === "keydown") {
            var newListener = function (e) {
                if (keysConfig[e.key.toLowerCase()]) {
                    return;
                }
                listener.apply(this, arguments);
            };
            originalAddEventListener.call(this, type, newListener, options);
        }
        else {
            originalAddEventListener.call(this, type, listener, options);
        }
    };
    // 从 document 对象移除可能已经存在的 'keydown' 事件监听器
    document.removeEventListener("keydown", preventCertainKeys);
    // 添加一个新的 'keydown' 事件监听器来阻止配置中设定的按键默认行为
    document.addEventListener("keydown", preventCertainKeys);
    registerMenuCommand();
})();

/******/ })()
;

QingJ © 2025

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