禁用浏览器ctrl D/command D快捷键

Enable or disable website hotkeys using a MenuCommand

目前為 2024-01-18 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         禁用浏览器ctrl D/command D快捷键
// @namespace    http://tampermonkey.net/
// @version      0.1.1
// @description  Enable or disable website hotkeys using a MenuCommand
// @author       aspen138
// @match        http://*/*
// @match        https://*/*
// @grant        GM_registerMenuCommand
// @grant        GM_getValue
// @grant        GM_setValue
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // Retrieve hotkeysEnabled state from storage or default to true
    let hotkeysEnabled = GM_getValue('hotkeysEnabled', true);

    // Function to toggle the state of hotkeysEnabled
    function toggleHotkeys() {
        hotkeysEnabled = !hotkeysEnabled;
        GM_setValue('hotkeysEnabled', hotkeysEnabled); // Save the new state to storage
        console.log('Hotkeys are now ' + (hotkeysEnabled ? 'enabled' : 'disabled'));
        alert('Hotkeys are now ' + (hotkeysEnabled ? 'enabled' : 'disabled'));
    }

    // Add menu command to toggle hotkeys
    GM_registerMenuCommand("Toggle Hotkeys", toggleHotkeys, 't');

    // Event listener to catch keydown events and prevent them if hotkeys are disabled
    document.addEventListener('keydown', function(e) {
        if(!hotkeysEnabled) {
            // Prevent default action for Ctrl+D or Command+D
            if ((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === 'd') {
                e.preventDefault();  // Prevent the default action
                e.stopPropagation(); // Stop the event from propagating to other handlers
            }
        }
    }, true);
})();