允许在 Firefox 中使用 Ctrl+T 在所有网站上打开新标签页

允许在 Firefox 中使用 Ctrl+T 在所有网站上打开新标签页

在 Firefox 中,某些网站和某些插件似乎“捕获”了“控制”键,因此当我尝试使用Ctrl+打开新选项卡时T,什么也没有发生 - 或者更糟糕的是,发生了一些意外的事情。

例子:

  • 在 Codecademy 网站上,编辑代码时,Ctrl+T要么不执行任何操作,要么切换光标旁边两个字符的位置。
  • 使用 Adob​​e PDF 插件查看 PDF 时,Ctrl+T不执行任何操作。

有没有办法禁用此“功能”?我希望Ctrl+T始终与 Firefox“对话”!

编辑

我发现我的问题和下面的问题非常相似:

这些问题的答案很有趣且相关,但没有提供如何禁用诸如Ctrl+之类的组合的方法T。也许修改后的 Greasemonkey 脚本是最简单的解决方案。

编辑 2-部分解决方案

以下用户脚本(编辑:现在是一个答案)大部分是从 StackExchange 复制/粘贴的。要使用它,您需要安装 GreaseMonkey。该脚本在某些网站上成功捕获了Ctrl+ T,例如 Google(-> 弹出“Gotcha”),但在 Codecademy 网站上却没有。

另外,我发现了另一个与此主题相关的问题:如何禁止 Firefox 中的网站窃取键盘快捷键这个问题在2010年就被提出来了,当时大家的共识是:这不可能。

编辑 3-使用户脚本工作

我编辑了用户脚本,现在它可以成功阻止 j​​avascript 拦截Ctrl+ T,而且感谢 JC2k8,我还找到了插件的解决方法(我还没有测试过)。我结合了这些信息并提交了一个答案 - 我会等几天,然后接受得票最高的答案。

答案1

一旦涉及到插件(Flash、Acrobat Reader、Quicktime 等),您就没那么幸运了。Mozilla 一直想通过“修复”插件 API 来修复此错误,以允许插件返回“未使用的”密钥,但由于这项工作规模庞大,因此从未完成过。有关此问题的详细辩论,您可以查看错误 78414在 Bugzilla。

答案2

对于拦截击键的插件:感谢 JC2k8 的回答,我遇到了此链接有人写了一个补丁,在将“重要”的按键发送到插件进程之前对其进行拦截。这个补丁很新,仍在评估中,但很高兴看到有人在研究它。我还没有测试过,但它可能会解决问题。

对于 Javascript 拦截按键:我终于设法让我的用户脚本工作起来了,通过结合这个脚本这个脚本。我必须承认,我不太清楚如何eventListener连接以及为什么它之前不起作用(请参阅我的旧版本问题如果你感兴趣的话,可以尝试一下。无论如何,以下脚本至少在 Firefox 17 ESR 上运行良好。

// ==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];  

(window.opera ? document.body : 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!"); //ucomment to check if it's seeing the combo
    }
    return false;
}, !window.opera);

答案3

您可以在操作系统级别捕获Ctrl+键序列,并将其传递给 Firefox。T

例如,您可以使用 AutoHotKey 监听Ctrl+T并发出命令

"C:\Program Files\Mozilla Firefox\firefox.exe" -new-tab about:newtab

如果您愿意,请将其替换about:newtab为实际的网页 URL。这将在现有的 Firefox 实例中打开一个新选项卡。您应该能够仅当 ff 具有焦点时捕获该序列,但仍能在 javascript 获取它之前捕获它。

相关内容