menus.update()
Aktualisiert ein zuvor erstelltes Menüelement.
Zur Kompatibilität mit anderen Browsern stellt Firefox diese Methode sowohl über den contextMenus
-Namespace als auch den menus
-Namespace bereit.
Dies ist eine asynchrone Funktion, die ein Promise
zurückgibt.
Syntax
let updating = browser.menus.update(
id, // integer or string
updateProperties // object
)
Parameter
id
-
integer
oderstring
. Die ID des Elements, das aktualisiert werden soll. updateProperties
-
object
. Die Eigenschaften, die aktualisiert werden sollen. Entspricht demcreateProperties
-Objekt, das anmenus.create()
übergeben wird, außer dassid
nicht festgelegt werden kann. Zudem könnenicons
nur bei Menübefehlen geändert werden, nicht im obersten Kontextmenü. Das oberste Symbol entspricht dem primären Symbol der Erweiterung, das in der Manifestdatei der Erweiterung deklariert ist.checked
Optional-
boolean
. Der anfängliche Status eines Kontrollkästchens oder Radio-Elements:true
für ausgewählt undfalse
für nicht ausgewählt. In einer Gruppe von Radio-Elementen kann nur ein Element gleichzeitig ausgewählt sein. command
Optional-
string
. Zeichenkette, die eine Aktion beschreibt, die ausgeführt werden soll, wenn der Benutzer auf das Element klickt. Anerkannte Werte sind:"_execute_browser_action"
: simuliert einen Klick auf die Browser-Aktion der Erweiterung und öffnet deren Popup, falls vorhanden (nur Manifest V2)"_execute_action"
: simuliert einen Klick auf die Aktion der Erweiterung und öffnet deren Popup, falls vorhanden (nur Manifest V3)"_execute_page_action"
: simuliert einen Klick auf die Seitenaktion der Erweiterung und öffnet deren Popup, falls vorhanden"_execute_sidebar_action"
: öffnet die Seitenleiste der Erweiterung
Einzelheiten finden Sie in der Dokumentation zu speziellen Abkürzungen im Manifest.json-Schlüssel
commands
.Wenn einer der anerkannten Werte angegeben ist, löst ein Klick auf das Element nicht das Ereignis
menus.onClicked
aus; stattdessen wird die Standardaktion ausgelöst, wie das Öffnen eines Pop-ups. Andernfalls löst ein Klick auf das Elementmenus.onClicked
aus und das Ereignis kann verwendet werden, um Fallback-Verhalten zu implementieren. contexts
Optional-
array
vonmenus.ContextType
. Array von Kontexten, in denen dieses Menüelement angezeigt wird. Wenn diese Option weggelassen wird:- Wenn das übergeordnete Element Kontexte festgelegt hat, dann erbt dieses Element die Kontexte seines übergeordneten Elements
- Andernfalls erhält das Element ein Kontext-Array von ["page"].
documentUrlPatterns
Optional-
array
vonstring
. Ermöglicht es Ihnen, das Element so einzuschränken, dass es nur auf Dokumente angewendet wird, deren URL mit einem der angegebenen Übereinstimmungsmuster übereinstimmt. Dies gilt auch für Frames. enabled
Optional-
boolean
. Ob dieses Menüelement aktiviert oder deaktiviert ist. Standardwert isttrue
. icons
Optional-
object
. Eines oder mehrere benutzerdefinierte Symbole, die neben dem Element angezeigt werden. Benutzerdefinierte Symbole können nur für Elemente festgelegt werden, die in Untermenüs erscheinen. Diese Eigenschaft ist ein Objekt mit einer Eigenschaft für jedes bereitgestellte Symbol: der Name der Eigenschaft sollte die Größe des Symbols in Pixeln enthalten, und der Pfad ist relativ zum Symbol aus dem Stammverzeichnis der Erweiterung. Der Browser versucht, ein 16x16 Pixel-Symbol für eine normale Anzeige oder ein 32x32 Pixel-Symbol für eine hochauflösende Anzeige auszuwählen. Um jegliches Skalieren zu vermeiden, können Sie Symbole wie folgt angeben:jsbrowser.menus.create({ icons: { 16: "path/to/geo-16.png", 32: "path/to/geo-32.png", }, });
Alternativ können Sie ein einziges SVG-Symbol angeben, das entsprechend skaliert wird:
jsbrowser.menus.create({ icons: { 16: "path/to/geo.svg", }, });
Hinweis: Das oberste Menüelement verwendet die im Manifest angegebenen Symbole, anstatt die mit diesem Schlüssel angegebenen.
id
Optional-
string
. Die eindeutige ID, die diesem Element zugewiesen werden soll. Obligatorisch für Ereignisseiten. Kann nicht dieselbe sein wie eine andere ID für diese Erweiterung. onclick
Optional-
function
. Die Funktion, die aufgerufen wird, wenn auf das Menüelement geklickt wird. Ereignisseiten können dies nicht verwenden: Stattdessen sollten sie einen Listener fürmenus.onClicked
registrieren. parentId
Optional-
integer
oderstring
. Die ID eines übergeordneten Menüelements; dies macht das Element zu einem Kind eines zuvor hinzugefügten Elements. Hinweis: Wenn Sie mehr als ein Menüelement erstellt haben, werden die Elemente in einem Untermenü platziert. Das Untermenü wird mit dem Namen der Erweiterung beschriftet. targetUrlPatterns
Optional-
array
vonstring
. Ähnlich wiedocumentUrlPatterns
, aber ermöglicht das Filtern basierend auf demhref
von Anker-Tags und demsrc
-Attribut von img/audio/video-Tags. Dieser Parameter unterstützt jedes URL-Schema, auch solche, die normalerweise in einem Übereinstimmungsmuster nicht erlaubt sind. title
Optional-
string
. Der Text, der im Element angezeigt werden soll. Verpflichtend, es sei denn,type
ist "separator".Sie können
%s
in der Zeichenkette verwenden. Wenn Sie dies in einem Menüelement tun und im Dokument, wenn das Menü angezeigt wird, ein Text ausgewählt ist, dann wird der ausgewählte Text in den Titel interpoliert. Zum Beispiel, wenntitle
"Übersetze '%s' ins Pig Latin" ist und der Benutzer das Wort "cool" auswählt, dann das Menü aktiviert, dann lautet der Titel des Menüelements: "Übersetze 'cool' ins Pig Latin".Wenn der Titel ein Und-Zeichen "&" enthält, wird das nächste Zeichen als Zugriffsschlüssel für das Element verwendet, und das Und-Zeichen wird nicht angezeigt. Ausnahmen sind:
- Wenn das nächste Zeichen ebenfalls ein Und-Zeichen ist: dann wird ein einzelnes Und-Zeichen angezeigt und es wird kein Zugriffsschlüssel gesetzt. Effektiv wird "&&" verwendet, um ein einzelnes Und-Zeichen anzuzeigen.
- Wenn die nächsten Zeichen die Interpolationsanweisung "%s" sind: dann wird das Und-Zeichen nicht angezeigt und es wird kein Zugriffsschlüssel gesetzt.
- Wenn das Und-Zeichen das letzte Zeichen im Titel ist: dann wird das Und-Zeichen nicht angezeigt und es wird kein Zugriffsschlüssel gesetzt.
Nur das erste Und-Zeichen wird verwendet, um einen Zugriffsschlüssel zu setzen: nachfolgende Und-Zeichen werden nicht angezeigt, setzen jedoch keine Schlüssel. "&A and &B" wird also als "A and B" angezeigt und setzt "A" als den Zugriffsschlüssel.
type
Optional-
menus.ItemType
. Der Typ des Menüelements: "normal", "checkbox", "radio", "separator". Der Standardwert ist "normal". viewTypes
Optional-
extension.ViewType
. Liste der Ansichtsarten, in denen das Menüelement angezeigt wird. Der Standardwert umfasst jede Ansicht, einschließlich solcher ohneviewType
. visible
Optional-
boolean
. Ob das Element im Menü angezeigt wird. Standardwert isttrue
.
Rückgabewert
Ein Promise
, das ohne Argumente erfüllt wird, wenn die Aktualisierung erfolgreich war, oder mit einer Fehlermeldung abgelehnt wird, wenn die Aktualisierung fehlgeschlagen ist.
Beispiele
Dieses Beispiel erstellt ein Menüelement und aktualisiert dessen Titel, wenn der Benutzer darauf klickt:
function onUpdated() {
console.log("item updated successfully");
}
function onError() {
console.log("error updating item:", browser.runtime.lastError);
}
browser.menus.create({
id: "do-not-click-me",
title: "Do not click this button",
contexts: ["all"],
});
browser.menus.onClicked.addListener((info, tab) => {
if (info.menuItemId === "do-not-click-me") {
let updating = browser.menus.update(info.menuItemId, {
title: "Do not click this button again",
});
updating.then(onUpdated, onError);
}
});
Beispielerweiterungen
Browser-Kompatibilität
Hinweis:
Diese API basiert auf Chromiums chrome.contextMenus
API. Diese Dokumentation stammt aus context_menus.json
im Chromium-Code.