browserAction.setIcon()
Setzt das Symbol für die Browser-Aktion.
Sie können ein einzelnes Symbol angeben, entweder als Pfad zu einer Bilddatei oder als browserAction.ImageDataType
-Objekt.
Sie können mehrere Symbole in verschiedenen Größen angeben, indem Sie ein Wörterbuch mit mehreren Pfaden oder ImageData
-Objekten bereitstellen. Dies bedeutet, dass das Symbol nicht für ein Gerät mit einer anderen Pixeldichte skaliert werden muss.
Tabs ohne ein spezifisches Symbol erben das globale Symbol, das standardmäßig das im Manifest angegebene default_icon
ist.
Dies ist eine asynchrone Funktion, die ein Promise
zurückgibt.
Syntax
let settingIcon = browser.browserAction.setIcon(
details // object
)
Parameter
details
-
object
. Ein Objekt, das die EigenschaftimageData
oderpath
enthält und optional entweder oder beide der EigenschaftentabId
undwindowId
.imageData
Optional-
oderbrowserAction.ImageDataType
object
. Dies ist entweder ein einzelnesImageData
-Objekt oder ein Wörterbuchobjekt.Verwenden Sie ein Wörterbuchobjekt, um mehrere
ImageData
-Objekte in verschiedenen Größen anzugeben, sodass das Symbol nicht für ein Gerät mit einer anderen Pixeldichte skaliert werden muss. WennimageData
ein Wörterbuch ist, ist der Wert jeder Eigenschaft einImageData
-Objekt und dessen Name ist seine Größe, wie folgt:jslet settingIcon = browser.browserAction.setIcon({ imageData: { 16: image16, 32: image32, }, });
Der Browser wird das zu verwendende Bild abhängig von der Pixeldichte des Bildschirms wählen. Siehe Auswahl von Symbolgrößen für weitere Informationen.
path
Optional-
string
oderobject
. Dies ist entweder ein relativer Pfad zu einer Symboldatei oder ein Wörterbuchobjekt.Verwenden Sie ein Wörterbuchobjekt, um mehrere Symboldateien in verschiedenen Größen anzugeben, sodass das Symbol nicht für ein Gerät mit einer anderen Pixeldichte skaliert werden muss. Wenn
path
ein Wörterbuch ist, ist der Wert jeder Eigenschaft ein relativer Pfad und dessen Name ist seine Größe, wie folgt:jslet settingIcon = browser.browserAction.setIcon({ path: { 16: "path/to/image16.jpg", 32: "path/to/image32.jpg", }, });
Der Browser wird das zu verwendende Bild abhängig von der Pixeldichte des Bildschirms wählen. Siehe Auswahl von Symbolgrößen für weitere Informationen.
tabId
Optional-
integer
. Setzt das Symbol nur für den angegebenen Tab. Das Symbol wird zurückgesetzt, wenn der Benutzer diesen Tab auf eine neue Seite navigiert. windowId
Optional-
integer
. Setzt das Symbol für das angegebene Fenster.
- Wenn
windowId
undtabId
beide angegeben sind, schlägt die Funktion fehl und das Symbol wird nicht gesetzt. - Wenn
windowId
undtabId
beide weggelassen werden, wird das globale Symbol gesetzt.
Wenn imageData
und path
jeweils undefined
, null
oder ein leeres Objekt sind:
- Wenn
tabId
angegeben ist und der Tab ein tabspezifisches Symbol hat, dann wird der Tab das Symbol des Fensters erben, zu dem er gehört. - Wenn
windowId
angegeben ist und das Fenster ein fensterspezifisches Symbol hat, dann wird das Fenster das globale Symbol erben. - Andernfalls wird das globale Symbol auf das Manifestsymbol zurückgesetzt.
Rückgabewert
Ein Promise
, das ohne Argumente erfüllt wird, sobald das Symbol gesetzt wurde.
Browser-Kompatibilität
BCD tables only load in the browser
Beispiele
Der untenstehende Code verwendet eine Browser-Aktion, um einen Listener für webRequest.onHeadersReceived
umzuschalten, und verwendet setIcon()
, um anzuzeigen, ob das Zuhören aktiv ist oder nicht:
function logResponseHeaders(requestDetails) {
console.log(requestDetails);
}
function startListening() {
browser.webRequest.onHeadersReceived.addListener(
logResponseHeaders,
{ urls: ["<all_urls>"] },
["responseHeaders"],
);
browser.browserAction.setIcon({ path: "icons/listening-on.svg" });
}
function stopListening() {
browser.webRequest.onHeadersReceived.removeListener(logResponseHeaders);
browser.browserAction.setIcon({ path: "icons/listening-off.svg" });
}
function toggleListener() {
if (browser.webRequest.onHeadersReceived.hasListener(logResponseHeaders)) {
stopListening();
} else {
startListening();
}
}
browser.browserAction.onClicked.addListener(toggleListener);
Der folgende Code setzt das Symbol mit einem ImageData
-Objekt:
function getImageData() {
let canvas = document.createElement("canvas");
let ctx = canvas.getContext("2d");
ctx.fillStyle = "green";
ctx.fillRect(10, 10, 100, 100);
return ctx.getImageData(50, 50, 100, 100);
}
browser.browserAction.onClicked.addListener(() => {
browser.browserAction.setIcon({ imageData: getImageData() });
});
Das folgende Snippet aktualisiert das Symbol, wenn der Benutzer darauf klickt, jedoch nur für den aktiven Tab:
browser.browserAction.onClicked.addListener((tab) => {
browser.browserAction.setIcon({
tabId: tab.id,
path: "icons/updated-48.png",
});
});
Beispielerweiterungen
Hinweis:
Diese API basiert auf der chrome.browserAction
-API von Chromium. Diese Dokumentation stammt aus browser_action.json
im Chromium-Code.