chrome.commands键盘快捷键不起作用

时间:2013-08-08 18:00:51

标签: google-chrome-extension

我正在尝试向 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 并点击右下角的“键盘快捷键”按钮时,我能够手动设置热键组合,然后就可以了。但我不希望用户必须做那个手工工作。

10 个答案:

答案 0 :(得分:22)

Chrome 29上,您必须导航到chrome://extensions/并向下滚动到页面底部。在右侧有一个按钮Keyboard shortcuts

弹出模式对话框,其中包含已在其清单文件中注册了一些commands的所有扩展名。 但快捷方式本身是Not set,因此用户必须手动设置它们。

答案 1 :(得分:8)

在设置快捷方式以包含 Ctrl / Cmd / Alt / Shift之一后,键盘快捷方式开始工作了。所以, Alt + S 工作但 Alt + Shift + S 不起作用

答案 2 :(得分:8)

正如您在此处的源代码中所看到的: https://code.google.com/p/chromium/codesearch#chromium/src/chrome/browser/extensions/api/commands/command_service.cc&l=303&sq=package:chromium&rcl=1409677023

密钥绑定更新仅在触发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)

根据documentation

  

用户可以使用chrome:// extensions \ Keyboard Shortcuts 中的UI自由地将任何快捷方式指定为全局快捷方式,但是扩展名 developer仅限于指定Ctrl + Shift + [0 ..9]作为全局快捷方式。这是为了最大程度地降低在其他应用程序中覆盖快捷方式的风险,因为例如,如果允许将Alt + P设置为全局方式,则打印快捷方式可能在其他应用程序中不起作用。