chrome.browserAction.setIcon没有做任何事情

时间:2016-06-02 18:05:03

标签: javascript google-chrome browser google-chrome-extension google-chrome-devtools

我正在制作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;我不确定路径是否被错误读取或是什么。

编辑:我打开控制台,在运行browserAction.setIcon时,我收到消息"未经检查的runtime.lastError:图标无效。"这是什么意思?如果我指定从C:\ Users ... \ blue-logo"开始的完整路径;我收到错误消息无法找到。

2 个答案:

答案 0 :(得分:15)

我不知道为什么,但你不能使用图标大于190px宽度和高度的setIcon函数。

我不知道的错误或功能。文档没有告诉我们......

奇怪的是,您可以在manifest.json文件中使用相同的图标。

答案 1 :(得分:2)

你的代码没问题!

要使其正常工作,图标尺寸应为16x16,48x48或128x128像素,正如官方文档中所建议的那样:

https://developer.chrome.com/extensions/manifest/icons