2

konnte ich meine Erweiterung Symbol für einen einzelnen aktiven Tab wechselt vor:Google Chrome-Erweiterung - Umschalt-Symbol für alle Registerkarten gleichzeitig?

chrome.browserAction.onClicked.addListener(function(tab) { 
    toggle = !toggle; 
    if(toggle){ 
    active_tab=tab.id; 
    chrome.browserAction.setIcon({path: "on.png", tabId:tab.id}); 
    } 
    else{ 
    chrome.browserAction.setIcon({path: "off.png", tabId:active_tab}); 
    } 
}); 

Aber wie ändere ich das Symbol für alle Registerkarten auf einmal ... den neu Tabs inklusive?

Gibt es eine einfache Möglichkeit, dies zu tun?

Antwort

3

Sie tun dies, indem keine tabId Eigenschaft auf dem Objekt, das Sie passieren zu browserAction.setIcon() versorgen. Die documentation for tabId heißt es, dass es optional und dass, wenn es angegeben:

Begrenzt die Änderung, wenn eine bestimmte Registerkarte ausgewählt ist. Wird automatisch zurückgesetzt, wenn die Registerkarte geschlossen wird.

Wenn Sie tabId nicht liefern, dann, was Sie auf alle Registerkarten angeben gilt für path oder imageData. Dies ist die Standardmethode, mit der die Methoden von browserAction, die die Eigenschaften der Schaltfläche ändern, funktionieren.

in Ihrem Fall also wäre es:

chrome.browserAction.onClicked.addListener(function(tab) { 
    toggle = !toggle; 
    if(toggle){ 
    active_tab=tab.id; 
    chrome.browserAction.setIcon({path: "on.png"}); 
    } 
    else{ 
    chrome.browserAction.setIcon({path: "off.png"}); 
    } 
}); 
+0

lol, ich dachte, es einfach aus mir ... aber ja, es ist viel besser so – Anonymous

0

Gelöst durch Hinzufügen eines anderen Listeners, der beim Wechseln der Registerkarten aktiviert wird.

chrome.browserAction.onClicked.addListener(function(tab) { 
    toggle = !toggle; 
    if(toggle){ 
     chrome.browserAction.setIcon({path: "on.png", tabId:tab.id}); 
    } 
    else{ 
     chrome.browserAction.setIcon({path: "off.png", tabId:tab.id}); 
    } 
}); 

chrome.tabs.onActivated.addListener(function (tab) { 
    if(toggle){ 
     chrome.browserAction.setIcon({path: "on.png", tabId:tab.id}); 
    } 
    else{ 
     chrome.browserAction.setIcon({path: "off.png", tabId:tab.id}); 
    } 
}); 
Verwandte Themen