NavigateEvent
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Das NavigateEvent Interface der Navigation API ist das Ereignisobjekt für das navigate Ereignis, das ausgelöst wird, wenn jede Art von Navigation initiiert wird (dies schließt die Verwendung von History API Funktionen wie History.go() ein). NavigateEvent bietet Zugriff auf Informationen über diese Navigation und ermöglicht es Entwicklern, den Navigationsvorgang abzufangen und zu steuern.
Konstruktor
-
Erstellt eine neue Instanz des
NavigateEventObjekts.
Instanz-Eigenschaften
Erbt Eigenschaften von seinem Elternteil, Event.
canInterceptSchreibgeschützt-
Gibt
truezurück, wenn die Navigation abgefangen werden kann, oderfalsesonst (z. B. kann eine Navigation über verschiedene Herkunftsgebiete nicht abgefangen werden). destinationSchreibgeschützt-
Gibt ein
NavigationDestinationObjekt zurück, das das Ziel der Navigation repräsentiert. downloadRequestSchreibgeschützt-
Gibt den Dateinamen der angeforderten Datei für den Download zurück, im Falle einer Download-Navigation (z. B. ein
<a>oder<area>Element mit einemdownloadAttribut), odernullsonst. formDataSchreibgeschützt-
Gibt das
FormDataObjekt zurück, das die übermittelten Daten im Falle einerPOST-Formularübertragung repräsentiert, odernullsonst. hashChangeSchreibgeschützt-
Gibt
truezurück, wenn es sich um eine Fragmentnavigation handelt (d.h. zu einem Fragmentbezeichner im selben Dokument), oderfalsesonst. hasUAVisualTransitionSchreibgeschützt-
Gibt
truezurück, wenn der Benutzeragent eine visuelle Übergangsnavigation durchgeführt hat, bevor dieses Ereignis ausgelöst wurde, oderfalsesonst. infoSchreibgeschützt-
Gibt die
info-Datendaten zurück, die durch den initiierenden Navigationsvorgang übermittelt wurden (z. B.Navigation.back()oderNavigation.navigate()), oderundefined, wenn keineinfo-Daten übermittelt wurden. -
Gibt den Typ der Navigation zurück —
push,reload,replaceodertraverse. signalSchreibgeschützt-
Gibt ein
AbortSignalzurück, das abgebrochen wird, wenn die Navigation abgebrochen wird (z. B. durch Drücken der "Stop"-Taste des Browsers oder durch Beginn einer neuen Navigation, die die laufende Navigation abbricht). sourceElementSchreibgeschützt-
Wenn die Navigation durch ein Element initiiert wurde (zum Beispiel durch Klicken auf einen Link), wird ein
ElementObjekt zurückgegeben, das das auslösende Element darstellt. userInitiatedSchreibgeschützt-
Gibt
truezurück, wenn die Navigation vom Benutzer initiiert wurde (z. B. durch Klicken auf einen Link, Absenden eines Formulars oder Drücken der "Zurück"/"Vorwärts"-Tasten des Browsers), oderfalsesonst.
Instanz-Methoden
Erbt Methoden von seinem Elternteil, Event.
intercept()-
Fängt diese Navigation ab, indem sie in eine gleiche Dokumentnavigation zur
destinationURL umgewandelt wird. Es können Handler-Funktionen übergeben werden, die definieren, wie das Navigationsverhalten aussehen soll, sowiefocusResetundscrollOptionen, um das Standardfokus- und -scrollverhalten des Browsers nach Belieben ein- oder auszuschalten. scroll()-
Kann aufgerufen werden, um das browsergesteuerte Scrollverhalten zu manuell auszulösen, das als Reaktion auf die Navigation auftritt, wenn Sie möchten, dass es passiert, bevor der Navigationsvorgang abgeschlossen ist.
Beispiele
>Handhabung einer Navigation mit intercept()
navigation.addEventListener("navigate", (event) => {
// Exit early if this navigation shouldn't be intercepted,
// e.g. if the navigation is cross-origin, or a download request
if (shouldNotIntercept(event)) return;
const url = new URL(event.destination.url);
if (url.pathname.startsWith("/articles/")) {
event.intercept({
async handler() {
// The URL has already changed, so show a placeholder while
// fetching the new content, such as a spinner or loading page
renderArticlePagePlaceholder();
// Fetch the new content and display when ready
const articleContent = await getArticleContent(url.pathname);
renderArticlePage(articleContent);
},
});
}
});
Hinweis:
Bevor die Navigation API verfügbar war, musste man für eine ähnliche Funktionalität alle Klickereignisse auf Links überwachen, e.preventDefault() ausführen, den entsprechenden History.pushState() Aufruf durchführen und dann die Seitenansicht basierend auf der neuen URL einrichten. Und dies würde nicht alle Navigationen behandeln — nur Benutzer-initiierten Linkklicks.
Handhabung des Scrollens mit scroll()
In diesem Beispiel der Abfangung einer Navigation beginnt die handler() Funktion damit, einige Artikelinhalte abzurufen und darzustellen, lädt aber danach noch sekundäre Inhalte nach. Es ist sinnvoll, die Seite zum Hauptartikelinhalt zu scrollen, sobald dieser verfügbar ist, sodass der Benutzer damit interagieren kann, anstatt zu warten, bis auch die sekundären Inhalte dargestellt sind. Um dies zu erreichen, haben wir einen scroll() Aufruf zwischen den beiden eingefügt.
navigation.addEventListener("navigate", (event) => {
if (shouldNotIntercept(event)) return;
const url = new URL(event.destination.url);
if (url.pathname.startsWith("/articles/")) {
event.intercept({
async handler() {
const articleContent = await getArticleContent(url.pathname);
renderArticlePage(articleContent);
event.scroll();
const secondaryContent = await getSecondaryContent(url.pathname);
addSecondaryContent(secondaryContent);
},
});
}
});
Spezifikationen
| Specification |
|---|
| HTML> # the-navigateevent-interface> |