我希望能够根据我当前浏览的网站更改扩展程序的图标。如何监听标签焦点的变化?
答案 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是可行的方法。