我正在制作Chrome扩展程序,扩展程序有两种模式:始终打开(alwaysOn
),或仅在用户点击它时onClick
)。我想将图标更改为蓝色或红色,具体取决于用户的模式,因此他们可以一目了然地看到它。但是,添加chrome.browserAction.setIcon()
行后,图标仍然无法在需要时更改。它只是保留在默认徽标上。
这是我的background.js:
// Get the behavior of the plugin; the default is set to "onClick", the other option is "alwaysOn"
chrome.storage.sync.get({
extensionBehavior: 'onClick'
}, function(items) {
if(items.extensionBehavior == 'onClick'){
chrome.browserAction.setIcon({path: "blue-logo.png"});
chrome.browserAction.onClicked.addListener(function() {
// When the extension icon is clicked, send a message to the content script
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {"message": tabs[0].url}, function(response){});
});
});
}
else {
chrome.browserAction.setIcon({path: "red-logo.png"});
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
if (changeInfo.status == 'complete') {
// When the HTML loads, send a message to the content script
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
chrome.tabs.sendMessage(tabs[0].id, {"message": tabs[0].url}, function(response){});
});
}
});
}
});
其他所有内容都运行良好,console.log()不会显示任何错误。有什么理由javascript会跳过"跳过"这些特殊的代码行? ("这些特定的代码行"是chrome.browserAction.setIcon({path: "blue-logo.png"});
和chrome.browserAction.setIcon({path: "red-logo.png"});
)有问题的图像与我的background.js,content_script.js等在同一个文件夹中。所以我&# 39;我不确定路径是否被错误读取或是什么。
答案 0 :(得分:15)
我不知道为什么,但你不能使用图标大于190px宽度和高度的setIcon函数。
我不知道的错误或功能。文档没有告诉我们......
奇怪的是,您可以在manifest.json文件中使用相同的图标。
答案 1 :(得分:2)
你的代码没问题!
要使其正常工作,图标尺寸应为16x16,48x48或128x128像素,正如官方文档中所建议的那样: