Gmail似乎捕获了所有键盘事件.有什么方法可以绕过那个?

Tim*_*her 10 javascript gmail google-chrome javascript-events google-chrome-extension

我正在编写一个Chrome扩展程序,用于启动带有键盘快捷键的脚本.它在大多数页面上运行良好,但我意识到在Gmail上它没有:似乎所有键盘事件都是由Gmail捕获的,并没有冒泡到我的功能.

我有一个内容脚本(在Chrome扩展程序中,这是添加到您想要的任何页面)(当然简化):

document.body.addEventListener('keypress', myFunction, true);
function myFunction(event) {
    console.log("yay, Gmail didn't let me down!");
}
Run Code Online (Sandbox Code Playgroud)

但实际上,Gmail确实让我失望了.我知道脚本加载.我尝试了不同的变体window.addEventListener和其他事件类型无济于事.

有人知道绕过这个的方法吗?我试着看看GreaseMonkey脚本是否可以做到这一点,这让我来到这里:http://code.google.com/p/gmail-greasemonkey/但这对我没有帮助.

谢谢!

Mar*_*R-L 1

我不知道GMail键盘事件捕获的内部工作原理,但我最近为Chrome编写了一个简单的键盘快捷键导航器(这样我就不必使用鼠标单击链接)。

它不是一个扩展,而是一个用户/Greasemonkey 脚本,但它是通过输入逗号 (,) 两次来触发的,并且它可以在 GMail 中运行。

也许它会帮助你查看源代码。您可以在这里下载: http: //userscripts.org/scripts/show/68609

  • 好吧,我明白了。事实证明,这与 Gmail 捕获事件并保留它本身并没有真正的关系:Chrome 扩展程序的一项设置可以使脚本匹配所有框架或仅匹配顶部框架。它默认只显示最上面的一个,Gmail 使用 iframe。所以我的脚本没有加载到需要的地方。(http://code.google.com/chrome/extensions/content_scripts.html)感谢您的工作示例,它帮助我进一步挖掘。 (4认同)