我的扩展程序使用tab.url获取数据并将其放在chrome.browserAction.setBadgeText中。当我打开一个新标签时,它会重置。如何仅为新标签更新BadgeText?并保持旧的不变?
扩展布局:
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){
function(tabId, changeInfo, tab){
//using tab.url and XMLHttpRequest() i get newText for:
chrome.browserAction.setBadgeText({text: newText});
};
});
答案 0 :(得分:8)
两个关键点可以帮助您解决问题。
1)chrome.browserAction.setBadgeText
有一个可选参数tabId
,用于将值绑定到标签。
2)您应该按changeInfo
's fields过滤chrome.tabs.onUpdated
个事件。
因此,请将您的代码更改为:
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){
function(tabId, changeInfo, tab){
if(!changeInfo.url) return; // URL did not change
// Might be better to analyze the URL to exclude things like anchor changes
/* ... */
chrome.browserAction.setBadgeText({text: newText, tabId: tab.id});
};
});
这可能无法捕捉新标签的创建;如果没有,也请听onCreated
答案 1 :(得分:3)
chrome.browserAction.setBadgeText({text: newText}, tab.id); //<<this is not working to me
chrome.browserAction.setBadgeText({text: "Phish", tabId: tab.id}); //<<This is working to me