如何拦截Ctrl-d快捷键?解决Tampermonkey脚本Ctrl-d失效问题
解决Ctrl-D无法触发脚本的问题
问题根源是Firefox内置快捷键的优先级:Ctrl+D是浏览器默认的「添加书签」快捷键,它的事件会在页面脚本的keyup事件之前被浏览器处理完成,导致你的脚本无法拦截到该事件。
修改方案如下:
- 把监听的事件从
keyup改为keydown——浏览器的默认动作通常在keydown阶段触发,这时候拦截更有效 - 将事件监听的第三个参数设为
true(启用捕获阶段),让脚本在浏览器处理事件之前先捕获到它
修改后的脚本:
(function() { 'use strict'; document.addEventListener('keydown', (ev) => { if (ev.ctrlKey && (ev.key == 'e' || ev.key == 'd')) { GM_log(ev); ev.preventDefault(); ev.stopPropagation(); // 可选,进一步阻止事件传递给浏览器默认逻辑 } }, true); // 启用捕获阶段 })();
额外提示:如果仍有问题,可以尝试添加ev.stopImmediatePropagation(),确保没有其他脚本或浏览器提前处理该事件。
内容的提问来源于stack exchange,提问作者ceving
相关产品推荐
相关产品推荐

