NavigateEvent
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.
* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.
L'interface NavigateEvent de l'API Navigation est l'objet évènement pour l'évènement navigate, qui se déclenche lorsqu'un type quelconque de navigation (angl.) est initié (cela inclut l'utilisation des fonctionnalités de la History API comme History.go()). NavigateEvent fournit un accès aux informations sur cette navigation et permet aux développeur·euse·s d'intercepter et de contrôler la gestion de la navigation.
Constructeur
-
Crée une nouvelle instance de l'objet
NavigateEvent.
Propriétés d'instance
Hérite des propriétés de son parent, Event.
canInterceptLecture seule-
Retourne
truesi la navigation peut être interceptée, ou sinonfalse(par exemple, vous ne pouvez pas intercepter une navigation inter-origine). destinationLecture seule-
Retourne un objet
NavigationDestinationreprésentant la destination vers laquelle la navigation est effectuée. downloadRequestLecture seule-
Retourne le nom du fichier demandé pour téléchargement, dans le cas d'une navigation de téléchargement (par exemple, un élément HTML
<a>ou<area>avec un attributdownload), ou sinonnull. formDataLecture seule-
Retourne l'objet
FormDatareprésentant les données envoyées dans le cas d'un envoi de formulairePOST, ou sinonnull. hashChangeLecture seule-
Retourne
truesi la navigation est une navigation vers un fragment (c'est-à-dire vers un identifiant de fragment dans le même document), ou sinonfalse. hasUAVisualTransitionLecture seule-
Retourne
truesi l'agent utilisateur a effectué une transition visuelle pour cette navigation avant de déclencher cet évènement, ou sinonfalse. infoLecture seule-
Retourne la valeur des données
infotransmises par l'opération de navigation initiatrice (par exemple,Navigation.back(), ouNavigation.navigate()), ouundefinedsi aucune donnéeinfon'a été transmise. -
Retourne le type de la navigation —
push,reload,replaceoutraverse. signalLecture seule-
Retourne un objet
AbortSignal, qui est annulé si la navigation est annulée (par exemple, si l'utilisateur·ice appuie sur le bouton « Arrêter » du navigateur, ou si une autre navigation commence et annule ainsi celle en cours). sourceElementLecture seule-
Lorsque la navigation a été initiée par un élément (par exemple en cliquant sur un lien), retourne un objet
Elementreprésentant l'élément initiateur. userInitiatedLecture seule-
Retourne
truesi la navigation a été initiée par l'utilisateur·ice (par exemple, en cliquant sur un lien, en envoyant un formulaire ou en appuyant sur les boutons « Précédent »/« Suivant » du navigateur), ou sinonfalse.
Méthodes d'instance
Hérite des méthodes de son parent, Event.
intercept()-
Intercepte cette navigation, la transformant en une navigation dans le même document vers l'URL
destination. Elle peut accepter des fonctions gestionnaires qui définissent le comportement de gestion de la navigation, ainsi que les optionsfocusResetetscrollpour activer ou désactiver le comportement par défaut de mise au point et de défilement du navigateur selon les besoins. scroll()-
Peut être appelée pour déclencher manuellement le comportement de défilement piloté par le navigateur qui se produit en réponse à la navigation, si vous souhaitez qu'il se produise avant que la gestion de la navigation ne soit terminée.
Exemples
>Gérer une navigation en utilisant intercept()
navigation.addEventListener("navigate", (event) => {
// Quitte prématurément si cette navigation ne doit pas être interceptée,
// par exemple, si la navigation est inter-origine, ou une requête de téléchargement
if (shouldNotIntercept(event)) return;
const url = new URL(event.destination.url);
if (url.pathname.startsWith("/articles/")) {
event.intercept({
async handler() {
// L'URL a déjà changé, donc afficher un espace réservé pendant
// la récupération du nouveau contenu, comme un indicateur de
// chargement ou une page de chargement
rendreEspaceReserveArticle();
// Récupère le nouveau contenu et l'afficher lorsqu'il est prêt
const contenuArticle = await obtenirContenuArticle(url.pathname);
rendrePageArticle(contenuArticle);
},
});
}
});
Note :
Avant que l'API Navigation ne soit disponible, pour faire quelque chose de similaire, il fallait écouter tous les évènements de clic sur les liens, exécuter e.preventDefault(), effectuer l'appel approprié à History.pushState(), puis configurer la vue de la page en fonction de la nouvelle URL. Et cela ne gérerait pas toutes les navigations — seulement les clics sur les liens initiés par l'utilisateur·ice.
Gérer le défilement avec scroll()
Dans cet exemple d'interception d'une navigation, la fonction handler() commence par récupérer et afficher le contenu d'un article, puis récupère et affiche un contenu secondaire par la suite. Il est logique de faire défiler la page jusqu'au contenu principal de l'article dès qu'il est disponible afin que l'utilisateur·ice puisse interagir avec lui, plutôt que d'attendre que le contenu secondaire soit également rendu. Pour ce faire, nous avons ajouté un appel à scroll() entre les deux.
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 contenuArticle = await obtenirContenuArticle(url.pathname);
rendrePageArticle(contenuArticle);
event.scroll();
const contenuSecondaire = await obtenirContenuSecondaire(url.pathname);
ajouterContenuSecondaire(contenuSecondaire);
},
});
}
});
Spécifications
| Spécification |
|---|
| HTML> # the-navigateevent-interface> |