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

时间:2011-11-29 03:06:07

标签: jquery jquery-plugins google-chrome-extension keyboard-shortcuts

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

以下是如何进行设置:

  1. 添加"命令" manifest.json root的关键字,填充一个 或更多命令("重启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"事件,和 过滤"命令",它将匹配您的声明中声明的键 在你的组合被按下时显示:

    chrome.commands.onCommand.addListener(function (command)
    {
        if (command == "Restart App")
        {
            chrome.runtime.reload();
        };
    });
    
  3. 那就是它!

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

    享受!

    -Matt

答案 1 :(得分:1)

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

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