通过快捷键激活扩展

j4k*_*kes 4 google-chrome-extension

是否可以通过快捷键打开/启动Google Chrome扩展程序.例如,我想指定一个快捷方式CTRL + E来打开我的扩展并启动它.

有没有人这样做过?

aps*_*ers 5

更新(2013年5月24日):您可以使用新的chrome.commandsAPI,它为键盘命令提供内置框架支持.

原始答案如下:

步骤1:使用内容脚本将keypress侦听器绑定到每个页面.

// in the content script, listen for Crtl+Shift+E (upper or lowercase)
document.documentElement.addEventListener("keypress", function(event) {
    if((e.keyCode == 69 || e.keyCode == 101) && e.ctrlKey && e.shiftKey) {
        // do something (step 2, below)
    }
}, true);
Run Code Online (Sandbox Code Playgroud)

步骤2:对于内容脚本之外的操作,使用消息传递通知后台页面已按下快捷键,它应执行某些操作.

第3步:后台页面执行一些操作.目前不可能(并且可能永远不可能)以编程方式打开"浏览器操作"弹出窗口,但您可以发送交互式桌面通知,打开新选项卡或执行许多其他操作.

[ 编辑:编辑代码以包括Rob W.的建议; 在下面的评论中看到他关于安全的重要说明.]

  • 我将事件绑定到`document.documentElement`,第三个参数([useCapture](https://developer.mozilla.org/en/DOM/element.addEventListener))设置为`true`.详细说明:1.对于不完整的文档,`document.body`可能是'null`.2.当`useCapture`设置为true时,页面的`event.stopPropagation()`不会阻止你的侦听器被触发.**警告:可以在页面中模拟此事件.不要将有潜在危险的操作附加到快捷方式.** (2认同)