在Firefox中,如何防止每个按键通过Javascript覆盖页面覆盖Firefox内置键盘快捷键?最好也基于每个站点?最令人沮丧的替代是链接到“在页面中查找”的正斜杠('/')。诸如Google搜索结果,Twitter时间轴,一些Wiki和其他页面之类的网站都在其自己的搜索框中窃取了斜杠键,这是完全错误的。
由于我的代表可以提问,编辑和回答问题,但不能添加评论,因此,这基本上是未正确回答的其他两个问题的重复:
在Firefox中,如何防止每个按键通过Javascript覆盖页面覆盖Firefox内置键盘快捷键?最好也基于每个站点?最令人沮丧的替代是链接到“在页面中查找”的正斜杠('/')。诸如Google搜索结果,Twitter时间轴,一些Wiki和其他页面之类的网站都在其自己的搜索框中窃取了斜杠键,这是完全错误的。
由于我的代表可以提问,编辑和回答问题,但不能添加评论,因此,这基本上是未正确回答的其他两个问题的重复:
Answers:
基于edymtt的答案,我创建了一个仅禁用特定键盘快捷键的用户脚本。您可以通过将键码添加到键码数组来添加更多禁用的快捷方式,或者通过用@include
一种或多种模式替换标记来限制将其应用于哪些站点。
使用滑脂猴子安装。
// ==UserScript==
// @name Disable keyboard shortcuts
// @description Stop websites from highjacking keyboard shortcuts
//
// @run-at document-start
// @include *
// @grant none
// ==/UserScript==
keycodes = [191] // Keycode for '/', add more keycodes to disable other key captures
document.addEventListener('keydown', function(e) {
// alert(e.keyCode); //uncomment to find out the keycode for any given key
if (keycodes.indexOf(e.keyCode) != -1)
{
e.cancelBubble = true;
e.stopImmediatePropagation();
}
return false;
});
191
就我的azerty设置而言,该值取决于您的键盘布局(我的alpha区域为16 + 58,数字键盘为111)
关于Google和“快速查找”快捷方式,您可以安装以下Greasemonkey脚本:
http://userscripts-mirror.org/scripts/show/132237
如描述所言,它“阻止google将搜索输入集中在每次按键上”-尤其是,如果您/
将键盘焦点放在搜索框之外进行按下,则会出现“快速查找”,就像在其他网站上一样。
我只安装了它而没有触及代码,但是我认为它可以很容易地适应与其他站点和/或其他快捷方式一起使用。
从Firefox 58开始,可以禁用每个网站的键盘快捷键覆盖。
“页面信息->权限”(位于URL栏的信息图标下方)中提供了“替代键盘快捷键”和许多其他权限。
Backspace
和Delete
键,这确实很糟糕。
Ctrl
,Shift
或Alt
键)输入-这意味着这并不在原来的问题中提到的斜杠键在所有帮助。
这是一个更通用的脚本-您可以定义任意数量的要禁用的按键事件。
https://greasyfork.org/en/scripts/5819-disable-website-keyboard-hooks
// ==UserScript==
// @name Disable website keyboard hooks
// @description Stop websites from hijacking keyboard shortcuts.
// @author Isaac Levy
// @run-at document-start
// @include *
// @grant none
// @version 0.0.1
// @namespace https://isaacrlevy.com
// ==/UserScript==
var keycodes = [ // Add keycodes as desired, keep sorted.
37, 38, 39, 40 // Arrow keys.
]
var meta_keycodes = [ // Disable these when meta key is pressed.
70
];
// Don't change below this line.
var isMac = navigator.platform.toLowerCase().indexOf('mac') >= 0;
// Create a fast lookup.
// This saves work during normal typing. Maybe unnecessary.
var keycode_offset = keycodes[0];
var keycode_arr = Array(keycodes[keycodes.length - 1] - keycode_offset)
for (var i = 0, len = keycodes.length; i < len; i++) {
keycode_arr[keycodes[i] - keycode_offset] = true;
}
document.addEventListener('keydown', function(e) {
//console.log(e);
if ((isMac && e.metaKey) || (!isMac && e.ctrlKey)) {
if (meta_keycodes.indexOf(e.keyCode) >= 0) {
e.stopImmediatePropagation();
}
} else if (keycode_arr[e.keyCode - keycode_offset]) {
e.stopImmediatePropagation();
}
return false;
});