chrome extension:如何获取关键事件

时间:2011-03-31 11:12:08

标签: google-chrome-extension

有没有办法在Google Chrome扩展程序文件中获取关键事件 - background.html - ?

document.onkeydown = function() {
  alert('test)
};

以前的代码不起作用。

3 个答案:

答案 0 :(得分:48)

不确定这是否仍处于有效状态,但更新可能有助于像我这样刚刚使用Chrome扩展程序的人。新的commands api允许您在不使用内容脚本的情况下接收相同的功能。

使用manifest.json文件注册键盘命令。例如:

...    
"commands": {
    "save" : {
        "suggested_key": {
             "default": "Alt+Shift+S" 
        },
        "description": "Save a link"
    },
    "random": {
        "suggested_key": {
            "default": "Alt+Shift+L"
        },
        "description": "Load a random link"
    }
}
...

然后你可以在后台页面中找到它

chrome.commands.onCommand.addListener(function (command) {
    if (command === "save") {
        alert("save");
    } else if (command === "random") {
        alert("random");
    }
});

希望这有帮助!

答案 1 :(得分:28)

我假设您要为扩展程序实现热键。您的代码实际上应该可以工作,除了它在后台页面上工作,后台页面通常不会打开以捕获按键。

要全局或至少在网页上捕捉按键,您必须使用content script向后台页面发送messages。内容脚本将注入打开的网页并插入捕获按键的方法,然后向后台页面发送一条消息,其中包含有关按下哪些键的信息。

答案 2 :(得分:0)

首先,您需要有一个背景 JavaScript 文件,在本例中我将调用 popup.js。这将包括您提供的代码:

document.onkeydown = function() {
  // what you want to on key press.
};

然后您想将此作为后台脚本文件包含在您的 manifest.json 中:

  "background": {
    "scripts": [
      "popup.js"
    ],
    "persistent": false
  },
  "content_scripts": [
    {
      "matches": [ "<all_urls>" ],
      "js": [ 
        "popup.js"
       ]
    }
  ]