2016-11-22 39 views
0

我创建一个简单的扩展,以显示不同的URL的图标。如何显示不同的页面操作图标每个URL

我的背景剧本包括:

chrome.tabs.onUpdated.addListener(function(o,r,m){for(var c=[ 
"URL1", 
"URL2", 
],a=0;a<c.length;a++)if(~m.url.indexOf(c[a])){chrome.pageAction.show(o);break}}); 

我想显示不同的页面操作图标查看每两个网址。我应该如何继续?

+1

请格式化你的代码的可读性。 – jacefarm

+0

请:使用描述他们代表的变量名称。它们只需要几个字符,但却显着提高了可读性/可维护性。建议:使用代码块'{}'来指示循环和/或条件语句,特别是使用条件语句作为循环中的唯一语句。也许:['.some'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)代替电流回路。使用按位NOT'〜'可能会产生意想不到的后果(与其他比较或逻辑NOT!!相比)。通常,**编码不是使用最少字节的竞赛。** – Makyen

回答

1

你似乎是在寻找chrome.pageAction.setIcon()

我已经重新编写的代码更可读的一点。我将您对Bitwise的使用NOT,~更改为!== -1的测试。我用.some()既遍历,并指出,如果发现匹配,以使页面操作图标可能会被隐藏,如果网址不匹配urlList(含两个URL和图标的新对象)。我以为你想让它在不匹配的情况下隐藏起来,因为当你有一场比赛时你就是这样。

var urlList=[{ 
    url:"URL1", 
    icon:"/URL1icon.png" 
}, 
{ 
    url:"URL2", 
    icon:"/URL2icon.png" 
}]; 

chrome.tabs.onUpdated.addListener(function(tabId,changeInfo,tab){ 
    if(!urlList.some(function(urlInfo){ 
     if(tab.url.indexOf(urlInfo.url) !== -1) { 
      //The urlInfo.url must match the beginning of the tab's current URL. 
      chrome.pageAction.show(tabId); 
      chrome.pageAction.setIcon(tabId,{ 
       path:urlInfo.icon 
      }); 
      return true; 
     } 
     return false; 
    })) { 
     //Hide the icon if the URL does not match. 
     chrome.pageAction.hide(tabId); 
    } 
}); 
相关问题