使用Ctrl键的Firefox按键事件

使用Ctrl键的Firefox按键事件,firefox,firefox-addon,Firefox,Firefox Addon,我正在开发一个firefox插件。 当试图捕获按键事件时,我可以在浏览器控制台上看到它的输出。 但如果我按CTRL+TAB键,则情况并非如此,例如: window.addEventListener('load', function () { document.addEventListener('keypress', function (e) { console.error(e); }, true); }, false); 仅按tab键时输出: keypress

我正在开发一个firefox插件。 当试图捕获按键事件时,我可以在浏览器控制台上看到它的输出。 但如果我按CTRL+TAB键,则情况并非如此,例如:

window.addEventListener('load', function ()  {
    document.addEventListener('keypress', function (e) {
        console.error(e);
    }, true);
}, false);
仅按tab键时输出:

keypress { target: <body.ask-page.new-topbar>, key: "Tab", charCode: 0, keyCode: 9 }
keypress{target:,key:“Tab”,charCode:0,keyCode:9}

为什么按键在任何Ctrl组合上都不会触发?

根据我的评论,我不确定为什么
e.ctlrKey
keypress
上不正确

您可以尝试的内容
getModifierState

window.addEventListener('load', function ()  {
    document.addEventListener('keypress', function (e) {
        console.error(e);
        console.error('Control down:', e.getModifierState('Control'));
    }, true);
}, false);

编辑:


显示您可以使用getmodifier在按键中执行此操作。只要使用ctrl作为修饰符,就可以正常工作,这意味着您首先按住ctrl键来结束此问题:这是我的错误报告,包括修复程序,这是按下ctrl++组合键时按键不会被触发的原因:

我不确定它为什么不会触发,但您可以使用
keyup
。如果使用
keydown
,则必须忽略重复发送。当他们按住它时,它会反复发送keydown,我想我还不够清楚:按Ctrl+任何其他键时都没有输出。只有一个没有Ctrl键的输出。按键似乎不会触发。哦,我明白了,您正在将其添加到文档中,尝试添加到窗口,如果仍然不起作用,则切换到使用
keyup
或切换到
keydown
。确保选中
e.repeat==false
相同的结果:无输出。我不想使用keyup/keydown,因为有keypress,它一直工作到一个特定的firefox版本(我只是不知道确切的版本)。但有一天它停止了工作。在bugzilla上提交一个bug a,它们可以帮助你发现它是否真的在某个版本后停止工作。也许这与e.repeat有关,我真的需要结合使用keydown。但这将是一个非常糟糕的解决方案,因为我需要查找Ctrl+Tab,并需要使用布尔标志,然后设置是否单击Ctrl。