Google chrome extension chrome扩展:如何获取关键事件

Google chrome extension chrome扩展:如何获取关键事件,google-chrome-extension,Google Chrome Extension,有没有办法在google chrome扩展文件--background.html-中获取关键事件 document.onkeydown = function() { alert('test) }; 前面的代码不起作用。我假设您希望为扩展实现热键。事实上,你的代码应该是可以工作的,除了它在背景页面上工作,背景页面通常不打开来捕捉按键 要在全局范围内捕捉按键,或者至少在网页上捕捉按键,您必须使用发送到后台页面的。内容脚本被注入到打开的网页中,并插入捕捉按键的方法,然后向后台页面发送一条消息,其

有没有办法在google chrome扩展文件--
background.html
-中获取关键事件

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

前面的代码不起作用。

我假设您希望为扩展实现热键。事实上,你的代码应该是可以工作的,除了它在背景页面上工作,背景页面通常不打开来捕捉按键


要在全局范围内捕捉按键,或者至少在网页上捕捉按键,您必须使用发送到后台页面的。内容脚本被注入到打开的网页中,并插入捕捉按键的方法,然后向后台页面发送一条消息,其中包含按下按键的信息。

不确定这是否仍然处于活动状态,但更新可能会帮助像我这样刚刚使用Chrome扩展的人。新版本允许您在不使用内容脚本的情况下接收相同的功能

使用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");
    }
});

希望这有帮助

首先,您需要一个背景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"
       ]
    }
  ]
“背景”:{
“脚本”:[
“popup.js”
],
“持续”:假
},
“内容脚本”:[
{
“匹配项”:[“”],
“js”:[
“popup.js”
]
}
]

但这只允许4个热键。这只需要使用某些键,并且CTRL必须是其中的一部分。我发现这对我的扩展的用户来说很不方便,所以我将尝试直接在内容中检测密钥。不幸的是,这个API受到可注册密钥列表的严重限制。从developer.chrome.com链接:“支持的键:A-Z、0-9、逗号、句点、起始、结束、上页、下页、空格、插入、删除、箭头键(上、下、左、右)和媒体键(MediaNextTrack、MediaPlayPause、MediaPrevTrack、MediaStop)。@PatrickDark,最糟糕的是,没有Ctrl键,您无法自行注册该键。基本上,它是无用的。换句话说,它不是真正的关键事件的好替代品。但是注入在很多页面上不起作用,比如chrome URL、pdf文档等。