我正在尝试向 Chrome扩展程序添加一些键盘快捷键,特别是允许用户使用热键打开浏览器操作/弹出窗口。我已阅读文档,并将以下代码行添加到 manifest.json 文件中:
"commands": {
"_execute_browser_action": {
"suggested_key": {
"windows": "Ctrl+Shift+Y",
"mac": "Command+Shift+Y",
"chromeos": "Ctrl+Shift+U",
"linux": "Ctrl+Shift+J"
}
}
}
添加此内容后,我在 chrome:// extensions 中重新加载了我的扩展程序并继续尝试 Command + Shift + Y 在我的 Mac 上,什么也没发生。大约2个小时,我尝试在 manifest.json 中设置不同的热键组合,但都没有效果。我从 Chrome 的开发版本切换到稳定版本但无济于事。当我转到 chrome:// extensions 并点击右下角的“键盘快捷键”按钮时,我能够手动设置热键组合,然后就可以了。但我不希望用户必须做那个手工工作。
答案 0 :(得分:22)
在Chrome 29
上,您必须导航到chrome://extensions/
并向下滚动到页面底部。在右侧有一个按钮Keyboard shortcuts
。
弹出模式对话框,其中包含已在其清单文件中注册了一些commands
的所有扩展名。
但快捷方式本身是Not set
,因此用户必须手动设置它们。
答案 1 :(得分:8)
在设置快捷方式以包含 Ctrl / Cmd / Alt / Shift之一后,键盘快捷方式开始工作了。所以, Alt + S 工作但 Alt + Shift + S 不起作用
答案 2 :(得分:8)
密钥绑定更新仅在触发OnExtensionWillBeInstalled回调时运行。
因此,您需要卸载并重新安装本地扩展,以查看默认键盘命令: 铬://扩展/ configureCommands
答案 3 :(得分:5)
如果您在加载扩展程序后修改了代码,则需要删除并重新加载它。
答案 4 :(得分:1)
您的(和我的)命令 + Shift + Y 击键可能被其他 OSX应用使用(可能是粘性物质)。
这适用于我的 Mac / Chrome 组合(将 Y 更改为 U ):
"browser_action": {
"default_popup": "browser_action.html"
},
"commands": {
"_execute_browser_action": {
"suggested_key": {
"default": "Ctrl+Shift+U",
"windows": "Ctrl+Shift+U",
"mac": "Command+Shift+U",
"chromeos": "Ctrl+Shift+U",
"linux": "Ctrl+Shift+U"
}
}
}
它对你有用吗?
答案 5 :(得分:0)
如果您使用console.log测试快捷方式,它将不会显示。也许用chrome.tabs.create测试它({url:“http://www.google.com/”});
这将需要“标签”的权限。
答案 6 :(得分:0)
尽管与任何现有的快捷方式都没有冲突,我仍然在努力解决“_execute_browser_action”键盘快捷键没有自动设置的问题。
事实证明我的问题是由以下原因引起的:
...
"commands" : {
"_execute_browser_action": {
"suggested_key": {
"mac": "Alt+J",
"linux": "Ctrl+Shift+J"
},
"global": true <-- this shouldn't be here
}
...
删除“global”:true解决了我的问题。希望这会有所帮助。
答案 7 :(得分:0)
添加到上述所有正确答案:在扩展页面中删除并添加扩展后,快捷方式仍然不适用于我正在使用的当前窗口。只有在打开新的chrome窗口后,该快捷方式才起作用。
答案 8 :(得分:0)
伙计,这很明显!
Ctrl
+ Shift
+ J
Ctrl
+ Shift
+ S
Ctrl
+ Shift
+ U
全部内置浏览器功能!
哪些不能被覆盖!
只需简单地使您的快捷方式不内置即可。
您可以找到here Chrome浏览器快捷方式的列表,
示例:
Ctrl
+ Shift
+ L
将触发Browser_Action
。
答案 9 :(得分:0)
用户可以使用chrome:// extensions \ Keyboard Shortcuts 中的UI自由地将任何快捷方式指定为全局快捷方式,但是扩展名 developer仅限于指定Ctrl + Shift + [0 ..9]作为全局快捷方式。这是为了最大程度地降低在其他应用程序中覆盖快捷方式的风险,因为例如,如果允许将Alt + P设置为全局方式,则打印快捷方式可能在其他应用程序中不起作用。