Chrome扩展程序pageAction.setIcon不可靠

时间:2013-05-05 16:27:08

标签: javascript google-chrome-extension

我正在尝试切换pageAction的图标。这是我正在使用的代码:

var activated = new Boolean();

chrome.pageAction.onClicked.addListener(function(tab) { 
 if(!activated){
        chrome.pageAction.setIcon({tabId: tab.id, path: 'icons/expanded.png'});
        activated = true;
        alert("activated");
    }else{
        chrome.pageAction.setIcon({tabId: tab.id, path: 'icons/expand.png'});
        activated = false;
        alert("not activated");
    }
});

虽然这在大多数情况下都有效,但有时它会报告已更改的状态,但不会切换图标。 有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

感谢Rob W,问题现在已经解决了。这是工作代码:

var activated = new Array();

function checkForValidUrl(tabId, changeInfo, tab) {
    chrome.pageAction.show(tabId);
    activated[tabID] = false;
};

chrome.pageAction.onClicked.addListener(function(tab) { 
 if(!activated[tab.id]){
        chrome.pageAction.setIcon({tabId: tab.id, path: 'icons/expanded.png'});
        activated[tab.id] = true;
        alert("activated");
    }else{
        chrome.pageAction.setIcon({tabId: tab.id, path: 'icons/expand.png'});
        activated[tab.id] = false;
        alert("not activated");
    }
});

它不是为每个打开的选项卡使用相同的状态,而是现在为数组中的每个选项卡存储状态,并使用它。