menus.update()
Aktualisiert ein zuvor erstelltes Menüelement.
Für die Kompatibilität mit anderen Browsern stellt Firefox diese Methode sowohl über den contextMenus
-Namespace als auch über den menus
-Namespace zur Verfügung.
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 zu aktualisierenden Elements. updateProperties
-
object
. Die Eigenschaften, die aktualisiert werden sollen. Dieselben wie dascreateProperties
-Objekt, das anmenus.create()
übergeben wurde, außer dassid
nicht gesetzt werden kann. Zusätzlich könnenicons
nur bei Menübefehlen geändert werden, nicht im Kontextmenü der obersten Ebene. Das Icon der obersten Ebene entspricht dem primären Icon der Erweiterung, wie es in der Manifest-Datei der Erweiterung deklariert ist.checked
Optional-
boolean
. Der Anfangszustand eines Kontrollkästchen- oder Radio-Elements:true
für ausgewählt undfalse
für nicht ausgewählt. In einer Gruppe von Radio-Elementen kann jeweils nur ein Element 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 Seiten-Aktion der Erweiterung und öffnet deren Popup, falls vorhanden"_execute_sidebar_action"
: öffnet die Seitenleiste der Erweiterung
Siehe die Dokumentation zu speziellen Tastenkombinationen im manifest.json-Schlüssel
commands
für Details.Wenn einer der anerkannten Werte angegeben wird, löst ein Klick auf das Element nicht das
menus.onClicked
-Ereignis aus; stattdessen wird die Standardaktion ausgeführt, z. B. das Öffnen eines Popups. Andernfalls löst ein Klick auf das Elementmenus.onClicked
aus, und das Ereignis kann verwendet werden, um ein Ersatzverhalten zu implementieren. contexts
Optional-
array
von
. Array von Kontexten, in denen dieses Menüelement erscheinen wird. Wenn diese Option weggelassen wird:menus.ContextType
- übernimmt das Element die Kontexte seines übergeordneten Elements, wenn dieses gesetzt ist
- andernfalls wird dem Element ein Kontextarray von ["page"] zugewiesen.
documentUrlPatterns
Optional-
array
vonstring
. Ermöglicht die Einschränkung des Elements auf Dokumente, deren URL einem der angegebenen Übereinstimmungsmuster entspricht. Dies gilt auch für Frames. enabled
Optional-
boolean
. Ob dieses Menüelement aktiviert oder deaktiviert ist. Standardmäßigtrue
. icons
Optional-
object
. Ein oder mehrere benutzerdefinierte Icons, die neben dem Element angezeigt werden. Benutzerdefinierte Icons können nur für Elemente in Untermenüs festgelegt werden. Diese Eigenschaft ist ein Objekt mit einer Eigenschaft für jedes bereitgestellte Icon: Der Name der Eigenschaft sollte die Größe des Icons in Pixel enthalten, und der Pfad ist relativ zum Icon aus dem Stammverzeichnis der Erweiterung. Der Browser versucht, ein 16x16 Pixel großes Icon für eine normale Anzeige oder ein 32x32 Pixel großes Icon für eine Anzeige mit hoher Dichte auszuwählen. Um eine Skalierung zu vermeiden, können Sie Icons wie folgt angeben:jsbrowser.menus.create({ icons: { 16: "path/to/geo-16.png", 32: "path/to/geo-32.png", }, });
Alternativ können Sie eine einzige SVG-Grafik angeben, die dann entsprechend skaliert wird:
jsbrowser.menus.create({ icons: { 16: "path/to/geo.svg", }, });
Hinweis: Das Menüelement der obersten Ebene verwendet die Icons, die im Manifest angegeben sind, anstatt der mit diesem Schlüssel angegebenen.
id
Optional-
string
. Die eindeutige ID, die diesem Element zugewiesen wird. Obligatorisch für Ereignisseiten. Kann nicht identisch mit einer anderen ID dieser Erweiterung sein. onclick
Optional-
function
. Die Funktion, die aufgerufen wird, wenn das Menüelement angeklickt 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. Der übergeordnete Punkt des Untermenüs ist mit dem Namen der Erweiterung gekennzeichnet. targetUrlPatterns
Optional-
array
vonstring
. Ähnlich wiedocumentUrlPatterns
, ermöglicht es jedoch die Filterung 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 wird. Obligatorisch, es sei denn,type
ist "separator".Sie können "
%s
" in der Zeichenkette verwenden. Wenn Sie dies in einem Menüelement tun und etwas Text auf der Seite ausgewählt ist, wenn das Menü angezeigt wird, wird der ausgewählte Text in den Titel interpoliert. Wenntitle
zum Beispiel "Übersetze '%s' ins Pig Latin" lautet und der Benutzer das Wort "cool" auswählt, dann das Menü aktiviert, dann wird der Titel des Menüelements lauten: "Übersetze 'cool' ins Pig Latin".Wenn der Titel ein "&" enthält, wird das nächste Zeichen als Zugriffstaste für das Element verwendet, und das "&" wird nicht angezeigt. Ausnahmen hiervon sind:
- Wenn das nächste Zeichen auch ein "&" ist: dann wird ein einzelner "&" angezeigt und keine Zugriffstaste gesetzt. Effektiv wird "&&" verwendet, um ein einzelnes "&" anzuzeigen.
- Wenn die nächsten Zeichen die Interpolationsrichtlinie "%s" sind: dann wird das "&" nicht angezeigt und es wird keine Zugriffstaste gesetzt.
- Wenn das "&" das letzte Zeichen im Titel ist: dann wird das "&" nicht angezeigt und es wird keine Zugriffstaste gesetzt.
Nur das erste "&" wird verwendet, um eine Zugriffstaste zu setzen: Nachfolgende "&" werden nicht angezeigt, setzen aber keine Tasten. So wird "&A and &B" als "A and B" angezeigt und die Taste "A" als Zugriffstaste gesetzt.
type
Optional-
. Der Typ des Menüelements: "normal", "checkbox", "radio", "separator". Standardmäßig "normal".menus.ItemType
viewTypes
Optional-
. Liste der Ansichtsarten, in denen das Menüelement angezeigt wird. Standardmäßig jede Ansicht, einschließlich solcher ohneextension.ViewType
viewType
. visible
Optional-
boolean
. Ob das Element im Menü angezeigt wird. Standardmäßigtrue
.
Rückgabewert
Ein Promise
, das erfüllt wird, ohne Argumente, wenn die Aktualisierung erfolgreich war, oder abgelehnt mit einer Fehlermeldung, 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);
}
});
Beispiel-Erweiterungen
Browser-Kompatibilität
BCD tables only load in the browser
Hinweis: Diese API basiert auf der chrome.contextMenus
API von Chromium. Diese Dokumentation leitet sich von context_menus.json
im Chromium-Code ab.