2016-04-29 10 views
5

In Chrome 51 haben Inkognito-Fenster jetzt einen dunklen Symbolleistenhintergrund, während frühere Versionen einen hellen Hintergrund hatten. Es ist im allgemeinen nicht machbar für ein einzelnes 16x16 Bild eines guten Kontrast in beiden Situationen zu bieten:Light & Dark-BrowserAktionssymbole in Chrome 51

IPvFoo with Light and Dark toolbars

Wenn durch ein browserAction Symbol für die Benutzer Informationen anzeigt, durch welchen Mechanismus kann eine Erweiterung bietet dunkel-Themen und Licht-Themen Symbole, und wechseln Sie zwischen ihnen, abhängig von der aktuellen Symbolleistenfarbe?

Link to source code for the pictured extension

Antwort

3

Es gibt keinen einfachen Mechanismus (noch) nicht, und es klingt wie ein excellent feature request to make zumindest für das Manifest.

Es ist jedoch möglich, dies zu approximieren, indem erkannt wird, dass Inkognito-Tabs geöffnet sind, und das Browseraktionssymbol für ersetzt wird, das nur.

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

Wenn Sie eine "split"incognito behavior (Nicht-Standard) verwenden, können Sie einfach das erkennen und das globale Symbol für die Inkognito-Instanz ändern:

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

Beachten Sie, dass Inhalte Skripte immer verlassen können auf inIncognitoContext, wenn Sie also ein Browseraktionssymbol von ihnen auslösen, können Sie das weitergeben.

Offensichtlich können Sie das mit imageData anstelle von path, wie in Ihrem Fall tun.

Sie können die Chrome-Version überprüfen, während Sie gerade dabei sind; Ich kenne keinen besseren Weg als erwähnt here.