Javascript Chrome扩展图标切换仅更新一次

Javascript Chrome扩展图标切换仅更新一次,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我在background.js中有一个切换功能:每当用户单击图标时,如果扩展被关闭,它就会打开,如果扩展被打开,它现在就会关闭,并且图标会交换以显示它处于哪些状态。“image1”显示它已关闭,“image2”显示它已打开。然而,该函数仅在单击时更新图标URL一次,尽管它不断地从“onclicked”事件中触发,正如chrome开发控制台所证明的那样。有什么想法吗 下面是background.js中的内容: var off = true; function updateIcon() {

我在background.js中有一个切换功能:每当用户单击图标时,如果扩展被关闭,它就会打开,如果扩展被打开,它现在就会关闭,并且图标会交换以显示它处于哪些状态。“image1”显示它已关闭,“image2”显示它已打开。然而,该函数仅在单击时更新图标URL一次,尽管它不断地从“onclicked”事件中触发,正如chrome开发控制台所证明的那样。有什么想法吗

下面是background.js中的内容:

var off = true;

function updateIcon() {
    if (off == true) {
        off = false;
        chrome.browserAction.setIcon({path:"image1.png"});
        console.log(off);
    }
    else {
        off = true;
        chrome.browserAction.setIcon({path:"image2.png"});
        console.log(off);
    }
    return;
}
chrome.browserAction.onClicked.addListener(updateIcon);
updateIcon();
和我的manifest.json文件:

{
   "background": {
      "scripts": [ "jquery-3.1.1.min.js", "background.js" ]
   },
   "browser_action": {
      "default_icon": "image1.png"
   },
   "content_scripts": [ {
      "css": [ "style.css" ],
      "js": [ "jquery-3.1.1.min.js", "content.js"],
      "matches": [ "https://www.facebook.com/*", "http://www.facebook.com/*", "http://facebook.com/*", "https://facebook.com/*"],
      "all_frames" : true,
      "run_at" : "document_start"
   } ],
   "icons" : {
       "64" : "image1.png",
       "64" : "image2.png"
   },
   "description": "Blah blah blah",
   "manifest_version": 2,
   "name": "Working Title",
   "permissions": [ "activeTab", "https://www.facebook.com/*", "http://www.facebook.com/*" ],
   "update_url": "https://clients2.google.com/service/update2/crx",
   "version": "1.0",
   "web_accessible_resources": [ "images/*.png" ]
}

我不知道你的浏览器或电脑是否有问题,但我在不同的文件上测试了所有的代码,似乎工作正常。除非content.js中的background.js有任何冲突,否则问题不在于代码

图标的大小不正确(128 x 128)。现在工作。谢谢

我检查了您的代码(57.0.2987.133 Win10),它工作正常。每次点击它都会切换图标。我怀疑你的图标名称有误。此外,清单中的
图标
键没有什么意义。