Chrome扩展程序中的键盘快捷键

我正在尝试连接我的chrome扩展程序的键盘快捷键。 我正在使用jQuery插件: http : //oscargodson.com/labs/jkey/ 。

这是我用来测试它的代码:

$(document).ready(function() { function say_hello() { alert("hello!"); } $(document).jkey('/', say_hello); }); 

我现在在后台页面中有这个,但它不起作用。 这种类型的代码应该放在后台页面中,还是更适合内容脚本的内容? 或者我应该把它放在其他地方吗?

背景页面不能(通常)被聚焦或点击,因此它们永远不会接收事件。 您必须将此作为内容脚本注入。

请注意,这在某些页面上不起作用,包括“新标签页”。 不幸的是,没有办法解决这个问题。 :/

我知道这个问题很古老,但万一你还没有发现,这是你问题的最新解决方案:

Chrome扩展程序现在有一个事件会触发任何镀铬窗口中的特定键组合(除了可能是单独的隐身会话,我还没有尝试过),使用chrome.commands API

以下是如何设置它:

  1. 向manifest.json root添加“commands”键,填充一个或多个命令(在本例中为“Restart App”)。 每个命令都应为PC和Mac指定所需的组合键。 (有些组合,比如ctrl-f5,受限制,fyi。我也不确定描述是可选的还是必需的。)

     "commands": { "Restart App": { "suggested_key": { "default": "Ctrl+Shift+5", "mac": "Command+Shift+5" }, "description": "Restart my app (Debugging)" } } 
  2. 在background.js中,将处理程序绑定到“onCommand”事件,并过滤“command”,它将匹配按下组合时清单中声明的​​键:

     chrome.commands.onCommand.addListener(function (command) { if (command == "Restart App") { chrome.runtime.reload(); }; }); 

就是这样!

我让人们质疑热键的价值,但我是他们的坚定拥护者。 通过将鼠标/键盘模式切换到仅限键盘来节省的时间可能是每次使用<1秒,但是在几个繁重的调试会话中它开始累加。 将上面示例中的快捷方式添加到我开发的应用程序中可能已经节省了我的时间:)

请享用!

-Matt