Retour sur historique avec site en JS

Fermé
stefman78260 Messages postés 48 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 24 décembre 2013 - 24 déc. 2013 à 02:15
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 24 déc. 2013 à 11:55
Bonjour à toutes et à tous,

J'ai presque fini mon site, et je viens de me rendre compte d'un petit "soucis technique". Impossible de faire un Back sur l'historique de navigation !

Enfaite, pour faire simple, du fait que mon site ne contient que peu d'images, le style est uniquement en css et le plus gros est du texte, j'ai donc opté pour le principe de page unique avec javascript.

J'ai un menu : "Accueil" "Histoire" "L'asso" "contact"

Dans la page principale (index.php) il se trouve des div avec la propriété "hidden:none;" au clique, par ex de "Histoire" la div de Histoire devient "hidden:block;" et les autres "none".

Sous cette forme:
<a href="#Histoire" class="btn_suite" onclick="document.getElementById('page1').style.display='none'; document.getElementById('page2').style.display='block'; document.getElementById('page3').style.display='none'; document.getElementById('page4').style.display='none';">L'Histoire</a>


Mon url devient donc : www.monsite.com/#Histoire (ou www.monsite.com/index.php#Histoire)

Un script javascript me permet que si le visiteur arrive directement via ce lien : www.monsite.com/index.php#Histoire par exemple, que ça soit la bonne page qui s'ouvre, mais voilà, lorsque l'on visite le site, que l'on passe de pages en pages, lorsque l'on utilise la touche "Back" ou le bouton du navigateur, l'ancre #NomDeLaPage change bien, mais la page, du coup ne bouge pas...

Est-ce faisable ? Si oui avez-vous une idée de comment ?

Ne me dites pas "Avec du javascript" car... je m'en doute, mais quelle serait la meilleur solution ?

Sinon, tant-pis je créerais de nouvelles pages .php !

Merci à vous pour vos idées !



A voir également:

3 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
24 déc. 2013 à 11:55
Non ça fonctionne sur tous les navigateurs récents (excepté Opéra Mini et partiellement supporté sur Safari) : https://caniuse.com/history

Il peut aussi y avoir quelques différences d'implémentation :
Les navigateurs ont tendance à gérer l'évènement popstate différemment au niveau du chargement de la page. Chrome et Safari déclencheront l'évènement poptate au chargement de la page, mais Firefox non.
1
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
24 déc. 2013 à 09:30
Salut,

Tu peux utiliser un écouteur sur l'événement onpopstate pour détecter le changement d'url : https://developer.mozilla.org/fr/docs/Web/API/WindowEventHandlers/onpopstate

Bonne journée
0
stefman78260 Messages postés 48 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 24 décembre 2013 2
24 déc. 2013 à 11:13
Merci, ça fonctionne que sous Mozilla ?
0