当标签页在地址栏中有特定的网址时,我需要显示一个页面操作弹出图标。
我在后台页面中有这个
chrome.tabs.query({url:"MYURL.COM"} , function(tab)
{
for(i=0;i<tab.length;i++)
{
console.log(tab[i].id);
chrome.pageAction.show(tab[i].id);
}
});
每次重新加载扩展程序时都会显示弹出窗口,但只要用户刷新,它就会消失,但不会再回来。
答案 0 :(得分:4)
原因是background.js页面只加载一次,因此每次更新页面选项卡时都需要添加一个监听器,以检查是否应该显示页面操作,如下所示:
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
if (tab.url.indexOf("MYURL.COM") > -1) {
chrome.pageAction.show(tabId);
}
});
没有理由像你一样迭代每个标签。
答案 1 :(得分:2)
正如亚当已经说过的那样,tabs.onUpdated
事件就是这样做的。
无论如何,[似乎我not the only one经历过tabs.onUpdated
事件并非总是在应该发生的时候even when waiting for complete status。
因此,如果您遇到同样的问题,您可能需要尝试我已经证明对我100%可靠的修改版本。
chrome.tabs.onUpdated.addListener(function(tabId, change) {
if (change.status == "complete") {
chrome.tabs.query({active: true}, function(tabs) {
var tab = tabs[0];
// Now do stuff with tab .. Eg:
if (tab.url.indexOf("MYURL.COM") > -1) {
chrome.pageAction.show(tab.id); }
else {
chrome.pageAction.hide(tab.id); }
});
}
});
答案 2 :(得分:0)
使用chrome.tabs.onUpdated收听您感兴趣的域名的新标签页和标签重新加载。