Aller au contenu

Détecter le changement d'ancre


Ernestine

Sujets conseillés

Bonjour,

Je cherche le moyen de détecter un changement d'ancre dans la page.

Par exemple si j'ai un lien du style :

<a href="#monAncre">cool</a>

Et ailleurs dans la page :

<a id="monAncre"></a>

Je veux détecter l'évènement "Arrivée sur l'ancre". Vous allez me dire : tu n'as qu'à simplement détecter le clic sur le lien qui mène à cette ancre. Oui mais non car l'utilisateur peut aussi arriver sur cette ancre en cliquant sur le bouton "Précédent" de son navigateur, ou bien directement dessus s'il a mis l'url avec l'ancre dans ses bookmarks, etc...

Comme vous l'aurez sûrement deviné : le but est de pouvoir gérer l'historique de navigation (Précédent / Suivant) pour un site full Ajax : chaque "arrivée" sur une ancre déclenchant donc le chargement d'une nouvelle vue.

Au départ je pensais naïvement qu'un simple focus() suffirait (je pensais que quand le navigateur se plaçait sur une ancre, cette ancre prenait le focus), mais non.

Pour l'instant le seul truc que j'ai trouvé est franchement pas terrible : un timer qui, chaque seconde, regarde l'url pour voir sir le hash (ce qui suit le #) a changé :(

Avez-vous une solution ? Merci.

Lien vers le commentaire
Partager sur d’autres sites

Et juste analyser l'url de la page au chargement de la page ?

Sur une page donnée il y a plusieurs ancres : quand l'utilisateur passe d'une ancre à l'autre (en cliquant sur les liens ou bien en faisant "Précédent / Suivant" dans son navigateur), la page ne se recharge pas...

Lien vers le commentaire
Partager sur d’autres sites

Si je passe de mapage.html#monAncre1 à mapage.html#monAncre2 puis à mapage.html#monAncre3, chaque fois que je passe d'une ancre à l'autre, la page ne se recharge jamais, ça reste toujours la même page (donc aucun évènement n'est déclenché, notamment pas un window.onload)

Lien vers le commentaire
Partager sur d’autres sites

Bon alors en fait il existe un plugin jQuery qui fait ça :
/>http://benalman.com/projects/jquery-hashchange-plugin/

Ce plugin utilise l'évènement onhashchange pour les navigateurs récents.

Et pour les navigateurs anciens (c'est à dire IE 6 et 7), il crée à la volée une iframe et y injecte les urls.

Cela répond parfaitement à mes attentes :)

En tous cas merci Captain ;)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...