menus.update()
Aktualisiert ein zuvor erstelltes Menüelement.
Zur Kompatibilität mit anderen Browsern stellt Firefox diese Methode sowohl im contextMenus
-Namespace als auch im 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 zu aktualisierenden Eigenschaften. Dieselben wie dascreateProperties
-Objekt, das anmenus.create()
übergeben wird, außer dassid
nicht gesetzt werden kann. Zusätzlich könnenicons
nur bei Menübefehlen geändert werden, nicht im obersten Kontextmenü. Das oberste Symbol entspricht dem primären Symbol der Erweiterung, wie es in der Manifestdatei der Erweiterung angegeben ist.checked
Optional-
boolean
. Der Anfangszustand eines Kontrollkästchens oder Radio-Elements:true
für ausgewählt undfalse
für nicht ausgewählt. In einer Gruppe von Radio-Elementen kann immer nur ein Radio-Element ausgewählt sein. command
Optional-
string
. Eine Zeichenkette, die eine Aktion beschreibt, die ausgeführt werden soll, wenn der Benutzer auf das Element klickt. Die anerkannten 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
Weitere Details 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
menus.onClicked
-Ereignis aus; stattdessen wird die Standardaktion ausgelöst, z.B. das Öffnen eines Pop-ups. Andernfalls löst ein Klick auf das Element dasmenus.onClicked
-Ereignis aus, und das Ereignis kann verwendet werden, um ein alternatives 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 gesetzt hat, übernimmt dieses Element die Kontexte seines übergeordneten Elements.
- Andernfalls erhält das Element ein Kontext-Array ["page"].
documentUrlPatterns
Optional-
array
vonstring
. Ermöglicht es Ihnen, das Element nur auf Dokumente anzuwenden, 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. Standardmäßigtrue
. icons
Optional-
object
. Ein oder mehrere benutzerdefinierte Symbole, die neben dem Element angezeigt werden sollen. Benutzerdefinierte Symbole können nur für Elemente in Untermenüs festgelegt werden. 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 großes Symbol für ein normales Display oder ein 32x32 Pixel großes Symbol für ein hochdichtes Display auszuwählen. Um Skalierungen 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 einzelnes SVG-Symbol angeben, und es wird entsprechend skaliert:
jsbrowser.menus.create({ icons: { 16: "path/to/geo.svg", }, });
Hinweis: Das oberste Menüelement verwendet die im Manifest angegebenen icons anstelle der mit diesem Schlüssel angegebenen.
id
Optional-
string
. Die eindeutige ID, die diesem Element zugewiesen wird. Erforderlich für Ereignisseiten. Darf nicht dieselbe wie eine andere ID dieser Erweiterung sein. 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. Der Elternteil des Untermenüs wird mit dem Namen der Erweiterung beschriftet. targetUrlPatterns
Optional-
array
vonstring
. Ähnlich wiedocumentUrlPatterns
, aber Sie können basierend auf demhref
von Anker-Tags und demsrc
-Attribut von img/audio/video-Tags filtern. 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. Erforderlich, es sei denn,type
ist "separator".Sie können
%s
im String verwenden. Wenn Sie dies in einem Menüelement tun und ein Text auf der Seite ausgewählt ist, wenn das Menü angezeigt wird, wird der ausgewählte Text in den Titel eingefügt. Zum Beispiel, wenntitle
ist "Übersetze '%s' ins Pig Latin" und der Benutzer wählt das Wort "cool" aus, dann das Menü aktiviert, dann wird der Titel des Menüelements sein: "Übersetze 'cool' ins Pig Latin".Wenn der Titel ein Kaufmanns-Und "&" enthält, wird das nächste Zeichen als Zugriffsschlüssel für das Element verwendet, und das Kaufmanns-Und wird nicht angezeigt. Ausnahmen hiervon sind:
- Wenn das nächste Zeichen ebenfalls ein Kaufmanns-Und ist: Dann wird ein einzelnes Kaufmanns-Und angezeigt und kein Zugriffsschlüssel festgelegt. In der Praxis wird "&&" verwendet, um ein einzelnes Kaufmanns-Und anzuzeigen.
- Wenn die nächsten Zeichen die Interpolationsanweisung "%s" sind: Dann wird das Kaufmanns-Und nicht angezeigt und kein Zugriffsschlüssel festgelegt.
- Wenn das Kaufmanns-Und das letzte Zeichen im Titel ist: Dann wird das Kaufmanns-Und nicht angezeigt und kein Zugriffsschlüssel festgelegt.
Nur das erste Kaufmanns-Und wird verwendet, um einen Zugriffsschlüssel festzulegen: nachfolgende Kaufmanns-Unds werden nicht angezeigt, aber es werden keine Schlüssel festgelegt. So wird "&A and &B" als "A and B" angezeigt und setzt "A" als Zugriffsschlüssel.
type
Optional-
menus.ItemType
. Der Typ des Menüelements: "normal", "checkbox", "radio", "separator". Standardmäßig "normal". viewTypes
Optional-
extension.ViewType
. Liste der Ansichtsarten, in denen das Menüelement angezeigt wird. Standardmäßig jede Ansicht, einschließlich solcher ohneviewType
. visible
Optional-
boolean
. Ob das Element im Menü angezeigt wird. Standardmäßigtrue
.
Rückgabewert
Ein Promise
, das ohne Argumente erfüllt wird, wenn das Update erfolgreich war, oder abgelehnt wird mit einer Fehlermeldung, wenn das Update fehlschlug.
Beispiele
Dieses Beispiel erstellt ein Menüelement und aktualisiert dann 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 der chrome.contextMenus
API von Chromium. Diese Dokumentation ist abgeleitet von context_menus.json
im Chromium-Code.