Navigation : méthode navigate()
Baseline 2026>
Nouvellement disponible
Depuis janvier 2026, cette fonctionnalité fonctionne sur les appareils et les versions de navigateur les plus récents. Elle peut ne pas fonctionner sur les appareils ou navigateurs plus anciens.
La méthode navigate() de l'interface Navigation navigue vers une URL spécifique, en mettant à jour tout état fourni dans la liste des entrées de l'historique.
Syntaxe
navigate(url)
navigate(url, options)
Paramètres
url-
L'URL de destination vers laquelle naviguer. Notez que lorsque vous appelez
navigate()sur l'objetnavigationd'une autre fenêtre, l'URL est résolue par rapport à l'URL de la fenêtre cible, et non par rapport à l'URL de la fenêtre appelante. Cela correspond au comportement de l'API History, mais pas au comportement de l'API Location. Notez également que les URLjavascript:ne sont pas autorisées pour des raisons de sécurité. optionsFacultatif-
Un objet d'options contenant les propriétés suivantes :
stateFacultatif-
L'information définie par le·la développeur·euse à stocker dans l'entrée d'historique associée
NavigationHistoryEntryune fois la navigation terminée, récupérable pargetState(). Cela peut être de n'importe quel type de données. Par exemple, vous pouvez souhaiter stocker un compteur de visites de page à des fins d'analyse, ou stocker les détails de l'état de l'interface utilisateur afin que la vue puisse être affichée exactement comme l'utilisateur·ice l'a laissée. Toutes les données stockées dansstatedoivent être structurées et clonables. infoFacultatif-
L'information définie par le·la développeur·euse à transmettre à l'évènement
navigate, rendue disponible dansNavigateEvent.info. Cela peut être de n'importe quel type de données. Par exemple, vous pouvez souhaiter afficher le contenu nouvellement navigué avec une animation différente selon la manière dont il a été navigué (glisser vers la gauche, glisser vers la droite ou aller à l'accueil). Une chaîne de caractères indiquant quelle animation utiliser peut être transmise dansinfo. historyFacultatif-
Une valeur énumérée qui définit le comportement de l'historique pour cette navigation. Les valeurs disponibles sont :
auto: La valeur par défaut ; effectue généralement une navigationpushmais effectue une navigationreplacedans des circonstances particulières (voir la description deNotSupportedErrorci-dessous).push: ajoute une nouvelleNavigationHistoryEntryà la liste des entrées, ou échoue dans des circonstances particulières (voir la description deNotSupportedErrorci-dessous).replace: remplace l'actuelleNavigationHistoryEntry.
Valeur de retour
Un objet avec les propriétés suivantes :
committed-
Une promesse (
Promisequi est complétée lorsque l'URL visible a changé et qu'une nouvelleNavigationHistoryEntrya été créée. finished-
Une promesse (
Promise) qui est complétée lorsque toutes les promesses retournées par le gestionnaireintercept()sont complétées. Cela équivaut à la promesseNavigationTransition.finishedse complétant, lorsque l'évènementnavigatesuccessse déclenche.
Chaque promesse se rompt si la navigation a échoué pour une raison quelconque.
Exceptions
DataCloneErrorDOMException-
Levé si le paramètre
statecontient des valeurs qui ne sont pas clonables de manière structurée. InvalidStateErrorDOMException-
Levé si le document n'est pas actuellement actif.
SyntaxErrorDOMException-
Levé si le paramètre
urln'est pas une URL valide. NotSupportedErrorDOMException-
Levé si :
- L'option
historyest définie surpush, et le navigateur affiche actuellement le document initialabout:blank. - Le schéma de l'URL est
javascript.
- L'option
Exemples
>Configurer le bouton d'accueil
function initBoutonAccueil() {
// Obtient la clé de la première entrée chargée
// alors l'utilisateur·ice peut toujours revenir en arrière de cette
// vue.
const { key } = navigation.currentEntry;
backToHomeButton.onclick = () => {
navigation.traverseTo(key);
};
}
// Intercepte les évènements de navigation, tels que les clics sur les
// liens, et les remplace par des navigations sur une seule page
navigation.addEventListener("navigate", (event) => {
event.intercept({
async handler() {
// Navigue à une vue différente,
// mais le bouton « accueil » fonctionne toujours.
},
});
});
Bouton de retour intelligent
Un bouton « retour » fourni par la page peut vous ramener en arrière, même après un rechargement, en inspectant les entrées d'historique précédentes :
backButtonEl.addEventListener("click", () => {
if (
navigation.entries()[navigation.currentEntry.index - 1]?.url ===
"/product-listing"
) {
navigation.back();
} else {
// Si l'utilisateur·ice est arrivé·e ici d'une autre manière
// par exemple en tapant l'URL directement :
navigation.navigate("/product-listing", { history: "replace" });
}
});
Utiliser l'information et l'état
async function navigateHandler() {
await navigation.navigate(url, {
info: { animation: "swipe-right" },
state: { infoPaneOpen: true },
}).finished;
// Met à jour l'état de l'application
// …
}
Spécifications
| Spécification |
|---|
| HTML> # dom-navigation-navigate-dev> |