【问题标题】:Keyboard shortcut to Toggle (hide/show) my chrome extension切换(隐藏/显示)我的 chrome 扩展的键盘快捷键
【发布时间】:2015-09-22 14:41:23
【问题描述】:

我正在开发扩展程序,我希望我的 chrome 扩展程序通过命令(例如:“CMD+SHIFT+9”或默认值:“Ctrl+Shift+9”)切换(显示/隐藏); 虽然我在清单文件中定义了命令:

{
  ......... 
  "commands": {
    "toggle-window": {
      "suggested_key": {
        "default": "Ctrl+Shift+9",
        "mac": "Command+Shift+9"
      },
      "description": "Toggle feature foo",
      "global": true
    },
    ........
 }

现在,我可以在我的 backgroundScript.js 中做什么来做到这一点?

我的 backgroundScript.js 是:

chrome.commands.onCommand.addListener(function(command) {
  if(command === "toggle-window") {
      console.log('Command:', command);
      /* Logic to show/hide will go here..*/
  }
});

我该怎么做?谢谢!

实现了此“显示/隐藏”功能的示例扩展演示:

https://chrome.google.com/webstore/detail/meldium-browser-extension/fdocegmnehjgfhfjelhmaobjccoiklle

【问题讨论】:

  • 当我第一次在分类审核队列中看到这个问题时,我认为这看起来是一个不错的问题……但当我阅读时,我看到了这句话:“请给我一个代码……”。不要那样做。我们不是来为您编写代码的,但我们很乐意帮助回答您的任何具体问题。
  • 我猜你想要什么扩展的行为......你不需要在你的后台脚本中的任何逻辑。只需在清单文件中使用“_execute_browser_action”而不是“toggle-window”,chrome 将为您处理此功能。阅读this
  • 感谢您的回复,我不想让您给我确切的代码,我的意思只是给我基本的想法,尽管我正在尝试您所描述的内容,并且会让您知道它..谢谢
  • 我在清单文件中尝试了这个“_execute_browser_action”。它在我身边不起作用。
  • 我也在开发模式下本地测试它!

标签: javascript jquery google-chrome-extension browser-action


【解决方案1】:

经过长时间的研究,我终于解决了。首先,感谢@CViejo,他给了我一个提示:

“只需​​在清单文件中使用“_execute_browser_action”而不是“toggle-window”,chrome 将为您处理此功能。

正如@CViejo 所说,我像这样更新了 manifest.js 文件:

{
  ......... 
  "commands": {
    "_execute_browser_action": {
      "suggested_key": {
        "default": "Ctrl+Shift+9",
        "mac": "Command+Shift+9"
      }
    }
    ........
 }

然后,我重新加载了我的扩展,但它仍然没有工作.. 然后我只是在扩展页面底部找到 键盘快捷键 框,我在网上阅读了它,它基本上对我们有帮助“验证是否在清单文件中定义的键盘快捷键框中实际设置了建议的键”。我检查了 keyboard shortcuts 框,未设置该键,即使该键可用且已在清单中定义。

然后从堆栈溢出中,我发现了这个(这是一个重大错误):https://stackoverflow.com/a/25654514/5228251

您可以在此处的源代码中看到: 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 时运行 回调被触发。

因此您需要卸载并重新安装本地扩展程序才能看到 默认键盘命令出现在: chrome://extensions/configureCommands

我刚刚卸载了一个重新安装的解压扩展并检查了默认键盘命令是否出现在 chrome://extensions/configureCommands 中

它开始在我的扩展中工作......

非常感谢@CViejo 和@Stephane Brillant...

希望这也对其他人有所帮助.....

【讨论】:

  • 我现在正在尝试使用未打包的扩展程序进行最后一次卸载/重新安装,但一无所获。我想知道这是否已经改变(或者我是否遗漏了其他东西)?
  • 更新: 看起来我可能会遇到这个问题(尝试了 Ctrl+Shift+P)—“*某些 Chrome 快捷方式(例如窗口管理)总是优先于扩展命令快捷方式,不能被覆盖。” developer.chrome.com/extensions/commands — 当我使用不同的键时它可以工作。
  • @MrColes 是的,你完全正确。 “您的自定义快捷方式需要与 chrome 的默认(预定义)快捷方式不同”! :thumbup
猜你喜欢
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多