Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

NavigationPrecommitController: addHandler() Methode

Die addHandler() Methode der NavigationPrecommitController-Schnittstelle ermöglicht es Ihnen, eine Handler-Callback-Funktion im Precommit-Code dynamisch hinzuzufügen. Diese wird dann ausgeführt, nachdem die Navigation verpflichtet wurde.

Dies ist nützlich, wenn der Navigationsworkflow von Informationen abhängt, die erst bekannt sind, wenn der Precommit-Code zu laufen beginnt. Wenn der Precommit- und der (Post-Commit) Handler unabhängig sind, kann der Handler im options.handler-Argument, das an NavigateEvent.intercept() übergeben wird, angegeben werden.

Syntax

js
addHandler(handler);

Parameter

handler

Eine Callback-Funktion, die das Verhalten der Post-Commit-Navigation beschreibt; sie gibt ein Promise zurück.

Die Handler-Callback wird aufgerufen, als wäre sie der NavigateEvent.intercept()-Methode übergeben worden, und wird ausgeführt, nachdem die currentEntry-Eigenschaft aktualisiert wurde.

Rückgabewert

Keiner (undefined).

Ausnahmen

InvalidStateError DOMException

Wird ausgelöst, wenn:

  • Das ursprüngliche NavigateEvent nicht abgefangen oder abgebrochen wurde.
  • Das Document nicht vollständig aktiv ist.
SecurityError DOMException

Wird ausgelöst, wenn das isTrusted-Attribut des Ereignisses false ist.

Beispiele

Für weitere Beispiele siehe NavigationPrecommitController.

Grundlegende Verwendung

Dieses Beispiel zeigt eine precommitHandler-Implementierung, die Daten für eine Seite abruft und addHandler() verwendet, um je nach Seitentyp unterschiedliche Handler hinzuzufügen (die Implementierungen von fetchConfig, setupVideoPlayer() und setupArticleView() sind nicht gegeben).

js
navigation.addEventListener("navigate", (event) => {
  event.intercept({
    async precommitHandler(controller) {
      const pageData = await fetchConfig();
      if (pageData.type === "video") {
        controller.addHandler(() => setupVideoPlayer());
      } else {
        controller.addHandler(() => setupArticleView());
      }
    },
  });
});

Spezifikationen

Specification
HTML
# dom-navigationprecommitcontroller-addhandler

Browser-Kompatibilität

Siehe auch