我在写一个Chrome扩展程序,启动使用键盘快捷键的脚本。它工作正常,在大多数的网页,但我意识到,在Gmail上它没有:似乎所有的键盘事件被Gmail捕获和不冒泡到我的功能

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

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

但实际上,Gmail不会让我失望。我知道脚本的的加载。我试图window.addEventListener和其它事件类型的不同变化都没有效果。

的方式

有谁知道绕过这个? 我想看看的GreaseMonkey脚本可以做到这一点,那把我带到这里:的http://代码。 google.com/p/gmail-greasemonkey/ 但这并没有帮助我。

谢谢!

有帮助吗?

解决方案

我不知道Gmail的键盘事件捕获的内部工作原理,但我最近写了一个简单的键盘快捷键导航(所以我不必用鼠标点击链接)Chrome浏览器。

这不是一个扩展,但是用户/脚本Greasemonkey的,但它是由打字逗号(,)触发两次,并且它在GMail中的工作原理。

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

其他提示

好,我有一个工作溶液,反向来自onePassword插件工程改造。我只能猜测,为什么这个作品,我asume这是因为添加事件的输入元素。然而任何改变和它停止工作(在底部再导向呼叫是在底部的一个原因)

function redir(e) {
    e.focus();
    var h = document.createEvent("KeyboardEvent");
    h.initKeyboardEvent('keydown', true, true);
    e.dispatchEvent(h)
}
$("input").each(function(t,l) {redir(l)});

document.addEventListener('keydown', function(e) {
    if (e.ctrlKey && e.keyCode) {
      if (e.keyCode == 190) {
        chrome.extension.sendRequest({name: "spot-openPopUp"});
      }
    }
},false);

redir(document.body);

你可以看到我用重定向。这个例子实际上是原油顺便说一句,所以不要只用它

您可以尝试重定向的过程:

if (document.body.onkeypress) {
    // add as event listener instead
    var kpfunc = document.body.onkeypress;
    document.body.addEventListener('keypress', kpfunc, true);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top