2016-04-29 15 views
5

In Chrome 51, le finestre in incognito ora hanno uno sfondo scuro della barra degli strumenti, mentre le versioni precedenti utilizzavano uno sfondo chiaro. È generalmente fattibile per una singola immagine 16x16 per fornire un buon contrasto in entrambe le situazioni:Icone di navigazione chiara e scuraAzione in Chrome 51

IPvFoo with Light and Dark toolbars

Quando si visualizzano informazioni all'utente tramite un'icona browserAction, con quale meccanismo può un'estensione fornire scuro a tema e la luce a tema icone e passa da una all'altra a seconda del colore della barra degli strumenti corrente?

Link to source code for the pictured extension

risposta

3

Non esiste una semplice meccanismo (ancora), e suona come un excellent feature request to make per lo meno per il manifesto.

È possibile approssimare questo problema, rilevando le schede di navigazione in incognito aperte e sostituendo l'icona di azione del browser per solo nella scheda.

var incognitoIcons = { 
    19: "incognito19.png", 
    38: "incognito38.png" 
}; 

chrome.tabs.onCreated.addListener(function(tab) { 
    if (tab.incognito) { 
    chrome.browserAction.setIcon({ 
     path: incognitoIcons, 
     tabId: tab.id 
    }); 
    } 
}); 

Se stai usando un "split"incognito behavior (non predefinita), si può semplicemente rilevare che e cambiare l'icona globale per l'istanza in incognito:

// Somewhere in background during initialization 
if (chrome.extension.inIncognitoContext) { 
    chrome.browserAction.setIcon({path: incognitoIcons}); 
} 

Si noti che gli script contenuti possono sempre contare su inIncognitoContext, quindi se si attiva un'icona di azione del browser cambia da loro è possibile passare oltre.

Ovviamente, è possibile farlo con imageData anziché path, come è il tuo caso.

Si consiglia di controllare la versione di Chrome mentre ci sei; Non sono a conoscenza di un modo migliore di quello menzionato here.

Problemi correlati