Chrome扩展程序:如何更改标签焦点上的图标?

时间:2011-06-03 02:15:46

标签: google-chrome google-chrome-extension

我希望能够根据我当前浏览的网站更改扩展程序的图标。如何监听标签焦点的变化?

2 个答案:

答案 0 :(得分:2)

我想我已经把这个想出来了。你需要两个听众。一个可以感知标签何时被更改,一个可以感知它何时被更新。然后他们都可以触发相同的功能。这是背景文件中的内容......

function changeIcon() {
    //query the information on the active tab
    chrome.tabs.query({active: true}, function(tab){
        //pull the url from that information
        var url=tab[0].url;
        //do whatever you need to do with the URL
        //alert(url);
        //change the icon
        chrome.browserAction.setIcon({path: 'pathToIcon'});
    });
}

//listen for new tab to be activated
chrome.tabs.onActivated.addListener(function(activeInfo) {
    changeIcon();
});

//listen for current tab to be changed
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    changeIcon();
});

答案 1 :(得分:1)

只需在后台页面注册标签更新通知:

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab)
{
    if (changeInfo.status == "loading")
    {
        var url = tab.url;
        var iconPath = ???
        chrome.pageAction.setIcon({tabId: tabId, path: iconPath});
    }
});

只要标签更改位置,就会调用此处理程序。您无需关心当前选择哪个选项卡,因为您将为每个选项卡定义不同的图标。不过,如果你想这样做 - http://code.google.com/chrome/extensions/tabs.html#event-onSelectionChanged是可行的方法。