action.setIcon()
Setzt das Icon für die Browser-Aktion.
Hinweis: Diese API ist in Manifest V3 oder höher verfügbar.
Sie können ein einzelnes Icon entweder als Pfad zu einer Bilddatei oder als ein action.ImageDataType Objekt angeben.
Sie können mehrere Icons in verschiedenen Größen angeben, indem Sie ein Wörterbuch mit mehreren Pfaden oder ImageData Objekten bereitstellen. Dies bedeutet, dass das Icon nicht für ein Gerät mit einer anderen Pixeldichte skaliert werden muss.
Tabs ohne ein spezifisches Icon übernehmen das globale Icon, das standardmäßig dem im Manifest angegebenen default_icon entspricht.
Dies ist eine asynchrone Funktion, die ein Promise zurückgibt.
Syntax
let settingIcon = browser.action.setIcon(
details // object
)
Parameter
details-
object. Ein Objekt, das dieimageDataoderpathEigenschaft und optional entweder oder sowohl dietabIdundwindowIdEigenschaften enthält.imageDataOptional-
action.ImageDataTypeoderobject. Dies ist entweder ein einzelnesImageDataObjekt oder ein Wörterbuchobjekt.Verwenden Sie ein Wörterbuchobjekt, um mehrere
ImageDataObjekte in verschiedenen Größen anzugeben, sodass das Icon nicht für ein Gerät mit einer anderen Pixeldichte skaliert werden muss. WennimageDataein Wörterbuch ist, ist der Wert jeder Eigenschaft einImageDataObjekt und sein Name ist seine Größe, wie hier gezeigt:jslet settingIcon = browser.action.setIcon({ imageData: { 16: image16, 32: image32, }, });Der Browser wählt das Bild je nach der Pixeldichte des Bildschirms aus. Siehe Choosing icon sizes für weitere Informationen dazu.
pathOptional-
stringoderobject. Dies ist entweder ein relativer Pfad zu einer Icon-Datei oder es ist ein Wörterbuchobjekt.Verwenden Sie ein Wörterbuchobjekt, um mehrere Icon-Dateien in verschiedenen Größen anzugeben, sodass das Icon nicht für ein Gerät mit einer anderen Pixeldichte skaliert werden muss. Wenn
pathein Wörterbuch ist, ist der Wert jeder Eigenschaft ein relativer Pfad und sein Name ist seine Größe, wie hier gezeigt:jslet settingIcon = browser.action.setIcon({ path: { 16: "path/to/image16.jpg", 32: "path/to/image32.jpg", }, });Der Browser wählt das Bild je nach der Pixeldichte des Bildschirms aus. Siehe Choosing icon sizes für weitere Informationen dazu.
tabIdOptional-
integer. Setzt das Icon nur für den angegebenen Tab. Das Icon wird zurückgesetzt, wenn der Benutzer diesen Tab zu einer neuen Seite navigiert. windowIdOptional-
integer. Setzt das Icon für das angegebene Fenster.
- Wenn
windowIdundtabIdbeide angegeben sind, schlägt die Funktion fehl und das Icon wird nicht gesetzt. - Wenn
windowIdundtabIdbeide weggelassen werden, wird das globale Icon gesetzt.
Wenn jede der imageData und path undefined, null oder ein leeres Objekt ist:
- Wenn
tabIdangegeben ist und der Tab ein tab-spezifisches Icon hat, dann erbt der Tab das Icon von dem Fenster, zu dem er gehört. - Wenn
windowIdangegeben ist und das Fenster ein fensterspezifisches Icon hat, dann erbt das Fenster das globale Icon. - Andernfalls wird das globale Icon auf das Manifest-Icon zurückgesetzt.
Rückgabewert
Ein Promise, das erfüllt wird, ohne Argumente, sobald das Icon gesetzt wurde.
Beispiele
Der folgende Code verwendet eine Browser-Aktion, um einen Listener für webRequest.onHeadersReceived zu toggeln, und verwendet setIcon(), um anzuzeigen, ob der Listener aktiviert oder deaktiviert ist:
function logResponseHeaders(requestDetails) {
console.log(requestDetails);
}
function startListening() {
browser.webRequest.onHeadersReceived.addListener(
logResponseHeaders,
{ urls: ["<all_urls>"] },
["responseHeaders"],
);
browser.action.setIcon({ path: "icons/listening-on.svg" });
}
function stopListening() {
browser.webRequest.onHeadersReceived.removeListener(logResponseHeaders);
browser.action.setIcon({ path: "icons/listening-off.svg" });
}
function toggleListener() {
if (browser.webRequest.onHeadersReceived.hasListener(logResponseHeaders)) {
stopListening();
} else {
startListening();
}
}
browser.action.onClicked.addListener(toggleListener);
Der folgende Code setzt das Icon unter Verwendung eines ImageData Objekts:
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.action.onClicked.addListener(() => {
browser.action.setIcon({ imageData: getImageData() });
});
Das folgende Snippet aktualisiert das Icon, wenn der Benutzer darauf klickt, jedoch nur für den aktiven Tab:
browser.action.onClicked.addListener((tab) => {
browser.action.setIcon({
tabId: tab.id,
path: "icons/updated-48.png",
});
});
Browser-Kompatibilität
Loading…
Hinweis:
Diese API basiert auf der chrome.action API von Chromium. Diese Dokumentation ist abgeleitet von browser_action.json im Chromium Code.