我正在创建一个扩展程序,允许用户在Vivaldi浏览器上使用类似Chrome的标签切换。
在我的background.js中我试过
addEventListener("keydown", function(e) {
console.log(e.code); // never gets here
})
我最初让事件由content.js脚本处理,但是这需要在我将消息发送到background.js脚本之前完全加载任何新标签
function Listener()
{
this.stage = 0;
this.listen();
}
Listener.prototype.listen = function()
{
addEventListener("keydown", this.handleKeyDown);
addEventListener("keyup", this.handleKeyUp);
}
Listener.prototype.handleKeyDown = function(event)
{
for(var i = 0; i < 9; i++) {
if(event.ctrlKey) {
if(event.code == "Digit" + (i + 1)) {
chrome.runtime.sendMessage({
greeting: i
}, function(response) {
console.log(response);
})
}
}
}
}
new Listener();
我想将此功能移至我的background.js,以便它独立于浏览器操作运行。
答案 0 :(得分:2)
DOM键盘事件侦听器仅捕获焦点位于页面内时发生的击键。
无法显示背景页面,因此无法对焦。它永远不会收到任何输入事件。
您可能希望查看chrome.commands
API,但这是相当严格的。有一个很好的理由:你真的,真的不希望扩展能够收获所有的击键。
您可以通过使用(有效)命令调用扩展来部分绕过限制,这将打开其弹出窗口,而弹出窗口又可以使用DOM侦听器捕获更多事件。