2016-11-22 4 views
0

Ich erstelle eine einfache Erweiterung, um ein Symbol für verschiedene URLs anzuzeigen.So zeigen Sie für jede URL ein anderes Seitenaktionssymbol an

Mein Hintergrund Skript enthält:

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

Ich möchte für jeden der beiden URLs eine andere Seite Aktionssymbol angezeigt werden soll. Wie soll ich vorgehen?

+1

Bitte formatieren Sie Ihren Code zur besseren Lesbarkeit. – jacefarm

+0

Bitte: Verwenden Sie Variablennamen, die beschreiben, was sie darstellen. Sie kosten nur wenige Zeichen, verbessern aber deutlich die Lesbarkeit/Wartbarkeit. Vorschlagen: Verwenden Sie Code-Blöcke '{}', um Schleifen und/oder bedingte Anweisungen anzuzeigen, insbesondere mit einer Bedingung als einziger Anweisung in einer Schleife. Vielleicht: ['.some'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some) anstelle der aktuellen Schleife. Die Verwendung eines bitweisen NOT '~' kann unbeabsichtigte Konsequenzen haben (im Vergleich zu anderen Vergleichen oder logischem NOT '!'). Normalerweise ist das ** Coding kein Wettbewerb, um die wenigsten Bytes zu verwenden. ** – Makyen

Antwort

1

Sie scheinen nach chrome.pageAction.setIcon() zu suchen.

Ich habe den Code neu geschrieben, um ein bisschen lesbarer zu sein. Ich habe Ihre Verwendung von Bitwise NOT, ~, zu einem Test für !== -1 geändert. Ich verwendete .some(), um beide durch die urlList (ein neues Objekt, das sowohl URLs als auch die Symbole enthält) zu durchlaufen und anzuzeigen, ob eine Übereinstimmung gefunden wurde, so dass das Seitenaktions-Icon ausgeblendet werden konnte, wenn die URL nicht übereinstimmte. Ich nahm an, du wolltest es bei einem Nicht-Spiel versteckt haben, vorausgesetzt, dass du es warst, als es ein Match gab.

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