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

js
let updating = browser.menus.update(
  id,               // integer or string
  updateProperties // object
)

Parameter

id

integer oder string. Die ID des Elements, das aktualisiert werden soll.

updateProperties

object. Die Eigenschaften, die aktualisiert werden sollen. Entspricht dem createProperties-Objekt, das an menus.create() übergeben wird, außer dass id nicht festgelegt werden kann. Zudem können icons 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 und false 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 Element menus.onClicked aus und das Ereignis kann verwendet werden, um Fallback-Verhalten zu implementieren.

contexts Optional

array von menus.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 von string. 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 ist true.

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:

js
browser.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:

js
browser.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ür menus.onClicked registrieren.

parentId Optional

integer oder string. 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 von string. Ähnlich wie documentUrlPatterns, aber ermöglicht das Filtern basierend auf dem href von Anker-Tags und dem src-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, wenn title "Ü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 ohne viewType.

visible Optional

boolean. Ob das Element im Menü angezeigt wird. Standardwert ist true.

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:

js
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.