以下用户脚本(在 Firefox 中与 Greasemonkey 一起使用)理论上应该捕获所有Ctrl+t
网站上的所有事件,警告“Gotcha!”,然后阻止网站看到该Ctrl+t
事件。
但是,它仅适用于某些网站(Google、Stack Exchange),但不适用于其他网站。用户脚本不起作用的一个例子是 Codecademy(当代码编辑器有焦点时),它Ctr+t
总是切换光标旁边的两个字符。
我禁用了 Flash,所以我认为这是一个可以用 JavaScript 解决的问题。我可以在我的脚本中进行哪些更改,以便它真正防止事件冒泡到网站脚本?
// ==UserScript==
// @name Disable Ctrl T interceptions
// @description Stop websites from highjacking keyboard shortcuts
//
// @run-at document-start
// @include *
// @grant none
// ==/UserScript==
// Keycode for 't'. Add more to disable other ctrl+X interceptions
keycodes = [84];
document.addEventListener('keydown', function(e) {
// alert(e.keyCode ); //uncomment to find more keyCodes
if (keycodes.indexOf(e.keyCode) != -1 && e.ctrlKey) {
e.cancelBubble = true;
e.stopImmediatePropagation();
alert("Gotcha!"); //comment this out for real world usage
}
return false;
});
免责声明:我最初问了一个关于超级用户的更广泛的问题。在尝试寻找答案时,我偶然发现了这个与脚本相关的特定问题。我并不是有意重复发布 - 我只是认为这部分问题可能更适合 Stack Overflow 而不是超级用户。