【问题标题】:Keyboard shortcuts in Chrome extensionsChrome 扩展程序中的键盘快捷键
【发布时间】:2011-11-29 03:06:07
【问题描述】:
我正在尝试为我的 chrome 扩展程序连接键盘快捷键。我为此使用了一个 jQuery 插件:http://oscargodson.com/labs/jkey/.
这是我用来测试它的代码:
$(document).ready(function() {
function say_hello() {
alert("hello!");
}
$(document).jkey('/', say_hello);
});
我现在在我的后台页面中有这个,但它不起作用。这种类型的代码应该放在后台页面中,还是更适合内容脚本?或者我应该把它完全放在其他地方吗?
【问题讨论】:
标签:
jquery
jquery-plugins
google-chrome-extension
keyboard-shortcuts
【解决方案1】:
我知道这个问题很古老,但以防万一您还没有发现,这里是您问题的最新解决方案:
Chrome 扩展现在有一个事件,只要在任何 chrome 窗口中按下特定的组合键(可能是单独的隐身会话,我没有尝试过),就会触发一个事件,chrome.commands API
设置方法如下:
-
将“commands”键添加到您的 manifest.json 根目录,其中填充一个
或更多命令(在这种情况下为“重新启动应用程序”)。每个命令应该
为 PC 和 Mac 指定所需的组合键。 (一些组合,
像 ctrl-f5 一样,受限制,仅供参考。我也不确定描述是否
是可选的或必需的。)
"commands": {
"Restart App": {
"suggested_key": {
"default": "Ctrl+Shift+5",
"mac": "Command+Shift+5"
},
"description": "Restart my app (Debugging)"
}
}
-
在 background.js 中,将处理程序绑定到“onCommand”事件,然后
过滤“命令”,这将匹配你声明的键
按下组合键时显示:
chrome.commands.onCommand.addListener(function (command)
{
if (command == "Restart App")
{
chrome.runtime.reload();
};
});
就是这样!
有人质疑热键的价值,但我是热键的坚定拥护者。通过将鼠标/键盘模式切换到仅键盘模式所节省的时间可能每次使用不到 1 秒,但经过几次繁重的调试会话后,它开始累积起来。到目前为止,将上面示例中的快捷方式添加到我开发的应用程序可能已经节省了我 小时 的时间 :)
享受吧!
-马特
【解决方案2】:
背景页面不能(通常)被聚焦或点击,所以它们永远不会收到事件。您必须将其作为内容脚本注入。
请注意,这不适用于某些页面,包括新标签页。不幸的是,没有办法解决这个问题。 :/