2016-11-22 86 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); 
    } 
}); 
相關問題