web-dev-qa-db-fra.com

comment changer l'url sans changer l'historique du navigateur

Jusqu'à présent, je sais seulement que si je veux changer d'URL sans recharger toute la page, je dois utiliser le navigateur HTML history API.

J'utilise ce concept dans mon site Web. Prenons l'exemple. Supposons que l'utilisateur se trouve sur cette page

 https://www.example.com/aboutus

puis il va à la liste des produits dans laquelle nous avons des filtres. En cliquant sur un système de filtres, vous générez une nouvelle URL quelque chose comme ceci

https://www.example.com/products?brands[]=song&brands[]=samsung&condition[]=new

En interne, il ne fait qu'appeler

history.pushState({}, 'Title', link.href);

Mais, il a un problème. Cliquez sur le bouton back pour revenir au filtre précédent. Je ne veux pas de cette fonctionnalité . Je veux, en cliquant sur le bouton de retour du navigateur, il devrait aller à la page qui est avant la page current. Dans notre cas, il est supposé prendre

https://www.example.com/aboutus

Merci.

41
Paritosh Piplewar

Vous recherchez replaceState(), il remplace la position actuelle dans l'historique au lieu d'en pousser une nouvelle, comme pushState() le fait

de [~ # ~] mdn [~ # ~]

history.replaceState() fonctionne exactement comme history.pushState() sauf que replaceState() modifie l'entrée d'historique actuelle au lieu d'en créer une nouvelle.

replaceState() est particulièrement utile lorsque vous souhaitez mettre à jour l'objet d'état ou l'URL de l'entrée d'historique actuelle en réponse à une action de l'utilisateur.

Rappelez-vous, certaines fonctions ne sont pas disponibles sur les anciens navigateurs . Mais il y a une bibliothèque qui pourrait vous aider.

76
adeneo