2012-01-22 37 views
0

我需要一个页面操作弹出图标,当地址栏中的标签具有特定的URL时出现。Chrome页面操作弹出消失

我有这个在我的背景页

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); 
       } 

      }); 

弹出显示,每当我重新加载扩展,但只要用户刷新,它消失了,不回来了。

回答

4

的原因是background.js页面只加载一次,所以你需要一个侦听器添加到每次页面标签更新为检查是否应显示的页面的动作,这样的事情:

chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) { 
    if (tab.url.indexOf("MYURL.COM") > -1) { 
     chrome.pageAction.show(tabId); 
    } 
}); 

没有理由在每个选项卡迭代为你做了。

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); } 
     }); 
    } 
});