Si vous voulez qu'il fonctionne dans les navigateurs qui ne supportent pas l' history.pushState
et history.popState
encore, le "vieux" solution consiste à définir l'identificateur de fragment, qui ne cause pas un rechargement de la page.
L'idée de base est de définir l' window.location.hash
de la propriété à une valeur qui contient tout ce que l'état des informations dont vous avez besoin, puis utilisez la fenêtre.onhashchange événement, ou pour les anciens navigateurs qui ne supportent pas l' onhashchange
(IE < 8, Firefox < 3.6), vérifier régulièrement pour voir si le hachage a changé (à l'aide d' setInterval
par exemple) et de mettre à jour la page. Vous aurez aussi besoin de vérifier la valeur de hachage au chargement de la page pour définir le contenu initial.
Si vous utilisez jQuery, il y a un hashchange plugin qui va l'utiliser quelle que soit la méthode le navigateur prend en charge. Je suis sûr qu'il y a des plugins pour les autres bibliothèques.
Une seule chose à faire attention est de collision avec des id sur la page, parce que le navigateur ne faites défiler jusqu'à n'importe quel élément avec un id correspondant.