【发布时间】:2016-04-20 09:40:49
【问题描述】:
我正在创建一个扩展程序,允许用户在 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,以便它独立于浏览器操作运行。
【问题讨论】:
-
只有内容脚本才能访问与 DOM 相关的内容,即使发生在当前网页上,您的意思是“这需要完全加载任何新选项卡,然后我才能将消息发送到 background.js 脚本”?您希望什么时候执行您的脚本?
-
无论加载了哪些选项卡,我都希望执行我的脚本@HaibaraAi - 它是一个选项卡切换器,所以如果我打开一个新选项卡,我希望能够使用组合键切换回选项卡一个,例如 ctrl + 1,我可以这样做,但我只需要等待新选项卡首先加载。
-
那么我相信@Xan 是对的,
chrome.commands就是为了这个目的,尽管许多限制,例如所有组合键都必须包含 Ctrl 或 Alt,...。
标签: javascript google-chrome google-chrome-extension