user
En javascript, comment changer l'URL dans la barre de navigation, sans rediriger l'utilisateur ?
alphonsio

En JavaScript, vous pouvez utiliser l'API history pour changer l'URL dans le navigateur sans recharger la page. Voici un exemple :

// Modifier l'URL sans rediriger
window.history.pushState({}, '', '/nouvelle-page');

// Vous pouvez également fournir des données supplémentaires relatives à l'état
window.history.pushState({page: 'nouvelle-page'}, '', '/nouvelle-page');

Dans cet exemple, pushState(state, unused, url) est une méthode qui prend trois paramètres :

  1. state : un objet d'état (state object) qui peut être n'importe quel objet. Cet objet est associé à l'entrée créée dans l'historique. Vous pouvez récupérer cet objet en utilisant history.state. Chaque fois que l'utilisateur navigue vers le nouvel état, un événement popstate est déclenché. La propriété state de l'événement contient une copie de l'objet passé en premier paramètre.

  2. unused : le second paramètre existe pour des raisons historiques, mais n'est plus utilisé. Il est recommandé de passer une chaîne de caractères vide pour assurer la comptabilité.

  3. url : une nouvelle URL (/nouvelle-url) qui est l'URL qui sera affichée dans la barre de navigation.

Vous pouvez également utiliser window.history.replaceState pour remplacer l'URL actuelle sans ajouter une nouvelle entrée dans l'historique :

window.history.replaceState({}, "Titre de la page", "/nouvelle-url");

Ces méthodes sont utiles pour les applications à page unique (Single Page Applications) où vous voulez mettre à jour l'URL en fonction de l'état de l'application sans recharger la page.