Thanks to visit codestin.com
Credit goes to developer.mozilla.org

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

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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