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
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 diecurrentEntry-Eigenschaft aktualisiert wurde.
Rückgabewert
Keiner (undefined).
Ausnahmen
InvalidStateErrorDOMException-
Wird ausgelöst, wenn:
- Das ursprüngliche
NavigateEventnicht abgefangen oder abgebrochen wurde. - Das
Documentnicht vollständig aktiv ist.
- Das ursprüngliche
SecurityErrorDOMException-
Wird ausgelöst, wenn das
isTrusted-Attribut des Ereignissesfalseist.
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).
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> |