NavigationPrecommitController: addHandler() Methode
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more support for this feature? Tell us why.
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
| Spezifikation |
|---|
| HTML> # dom-navigationprecommitcontroller-addhandler> |