我正在开发一个Google Chrome扩展程序,您应该可以使用扩展程序工具栏中的符号打开和关闭该功能。此切换应该是通用的,这意味着无论您在何处打开或关闭它,当前状态都将保留在任何地方。无论您在哪个标签页或窗口中,状态都随处可见。
就我们的示例而言,我们应该写“我在!”。打开控制台,然后按A键。如果关闭了电源,然后按A,则会显示“我关闭了!”。
manifest.json:
{
"name": "Test Extension",
"version": "1.0",
"manifest_version": 2,
"description": "Just a test for Stack Overflow.",
"browser_action": {
"default_icon": "images/icon.png"
},
"background": {
"scripts": ["background.js"]
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"]
}
]
}
background.js:
var extensionMode = true;
chrome.browserAction.onClicked.addListener(function(tab) {
extensionMode = !extensionMode;
if(extensionMode) {
chrome.browserAction.setIcon({
path : "images/icon.png"
});
} else {
chrome.browserAction.setIcon({
path : "images/icon_disabled.png"
});
}
let msg = {
extensionMode: extensionMode
}
chrome.tabs.sendMessage(tab.id, msg);
});
content.js:
var extensionMode = true;
chrome.runtime.onMessage.addListener(gotMessage);
function gotMessage(message, sender, sendResponse) {
extensionMode = message.extensionMode;
}
onkeydown = onkeyup = function(e){
if(extensionMode) {
if(event.keyCode == 65) { // A
console.log("I'm on!");
}
} else {
if(event.keyCode == 65) { // A
console.log("I'm off!");
}
}
}
上面的代码在您停留在选项卡中时起作用,但在切换时不起作用...图标将保持禁用状态,但是extensionMode实际上会恢复为true。
我在这里做错了什么?这是我尝试做的错误方法吗?
相关分类