Navigation: navigate() Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Die navigate() Methode der
Navigation Schnittstelle navigiert zu einer bestimmten URL und aktualisiert dabei jeden bereitgestellten Zustand in der Liste der Verlaufseinträge.
Syntax
navigate(url)
navigate(url, options)
Parameter
url-
Die Ziel-URL, zu der navigiert werden soll. Beachten Sie, dass bei einem Aufruf von
navigate()auf demnavigation-Objekt eines anderen Fensters die URL relativ zur URL des Ziel-Fensters und nicht zur URL des aufrufenden Fensters aufgelöst wird. Dies entspricht dem Verhalten der History API, jedoch nicht dem Verhalten der Location API. Beachten Sie auch, dassjavascript:URLs aus Sicherheitsgründen nicht erlaubt sind. optionsOptional-
Ein Optionsobjekt, das die folgenden Eigenschaften enthält:
stateOptional-
Vom Entwickler definierte Informationen, die im zugehörigen
NavigationHistoryEntrygespeichert werden, sobald die Navigation abgeschlossen ist. Diese Informationen können übergetState()abgerufen werden. Es kann sich um jeden Datentyp handeln. Sie könnten beispielsweise die Anzahl der Seitenbesuche zu Analysezwecken speichern oder Details des UI-Zustands speichern, sodass die Ansicht genau so angezeigt werden kann, wie der Benutzer sie zuletzt verlassen hat. Alle instategespeicherten Daten müssen strukturiert klonbar sein. infoOptional-
Vom Entwickler definierte Informationen, die dem
navigateEreignis übergeben werden, verfügbar inNavigateEvent.info. Es kann sich um jeden Datentyp handeln. Sie möchten beispielsweise neu navigierte Inhalte mit einer anderen Animation anzeigen, je nachdem, wie dorthin navigiert wurde (nach links wischen, nach rechts wischen oder nach Hause gehen). Ein String, der angibt, welche Animation verwendet werden soll, könnte ininfoübergeben werden. historyOptional-
Ein enumerierter Wert, der das Verlaufsverhalten dieser Navigation festlegt. Die verfügbaren Werte sind:
auto: Der Standardwert; wird normalerweise einepushNavigation durchführen, aber unter besonderen Umständen einereplaceNavigation durchführen (siehe die Beschreibung desNotSupportedErrorunten).push: Fügt einen neuenNavigationHistoryEntryzur Liste der Einträge hinzu oder schlägt unter besonderen Umständen fehl (siehe die Beschreibung desNotSupportedErrorunten).replace: Ersetzt den aktuellenNavigationHistoryEntry.
Rückgabewert
Ein Objekt mit den folgenden Eigenschaften:
committed-
Ein
Promise, das erfüllt wird, wenn sich die sichtbare URL geändert hat und ein neuerNavigationHistoryEntryerstellt wurde. finished-
Ein
Promise, das erfüllt wird, wenn alle von demintercept()Handler zurückgegebenen Versprechen erfüllt sind. Dies entspricht der Erfüllung desNavigationTransition.finishedVersprechens, wenn dasnavigatesuccessEreignis ausgelöst wird.
Eines dieser Versprechen schlägt fehl, wenn die Navigation aus irgendeinem Grund fehlgeschlagen ist.
Ausnahmen
DataCloneErrorDOMException-
Wird ausgelöst, wenn der
stateParameter Werte enthält, die nicht strukturiert klonbar sind. InvalidStateErrorDOMException-
Wird ausgelöst, wenn das Dokument derzeit nicht aktiv ist.
SyntaxErrorDOMException-
Wird ausgelöst, wenn der
urlParameter keine gültige URL ist. NotSupportedErrorDOMException-
Wird ausgelöst, wenn:
- Die
historyOption aufpushgesetzt ist und der Browser derzeit das initialeabout:blankDokument anzeigt. - Das Schema der
urljavascriptist.
- Die
Beispiele
>Einrichtung des Home-Buttons
function initHomeBtn() {
// Get the key of the first loaded entry
// so the user can always go back to this view.
const { key } = navigation.currentEntry;
backToHomeButton.onclick = () => {
navigation.traverseTo(key);
};
}
// Intercept navigate events, such as link clicks, and
// replace them with single-page navigations
navigation.addEventListener("navigate", (event) => {
event.intercept({
async handler() {
// Navigate to a different view,
// but the "home" button will always work.
},
});
});
Ein intelligenter Rückwärts-Button
Ein von der Seite bereitgestellter "Zurück"-Button kann Sie zurücknavigieren, selbst nach einem Neuladen, indem er die vorherigen Verlaufseinträge inspiziert:
backButtonEl.addEventListener("click", () => {
if (
navigation.entries()[navigation.currentEntry.index - 1]?.url ===
"/product-listing"
) {
navigation.back();
} else {
// If the user arrived here in some other way
// e.g. by typing the URL directly:
navigation.navigate("/product-listing", { history: "replace" });
}
});
Verwendung von info und state
async function navigateHandler() {
await navigation.navigate(url, {
info: { animation: "swipe-right" },
state: { infoPaneOpen: true },
}).finished;
// Update application state
// …
}
Spezifikationen
| Specification |
|---|
| HTML> # dom-navigation-navigate-dev> |