238 votes

Comment détecter si l'URL a changé après un hachage en JavaScript ?

Comment puis-je vérifier si une URL a changé en JavaScript ? Par exemple, des sites Web comme GitHub, qui utilisent AJAX, ajouteront des informations sur la page après un symbole # pour créer une URL unique sans recharger la page. Quel est le meilleur moyen de détecter si cette URL a changé ?

  • Est-ce que le onload L'événement est rappelé ?
  • Y a-t-il un gestionnaire d'événement pour l'URL ?
  • Ou faut-il vérifier l'URL toutes les secondes pour détecter un changement ?

1 votes

Pour les futurs visiteurs, une nouvelle réponse de @aljgom de 2018 est la meilleure solution : stackoverflow.com/a/52809105/151503

0voto

ranbuch Points 762
window.addEventListener("beforeunload", function (e) {
    // do something
}, false);

0voto

Agelos Pikoulas Points 635

Vous commencez un nouveau setInterval à chaque appel, sans annuler le précédent - probablement que vous vouliez seulement avoir une setTimeout

0voto

d-_-b Points 3491

Profitez-en !

var previousUrl = '';
var observer = new MutationObserver(function(mutations) {
  if (location.href !== previousUrl) {
      previousUrl = location.href;
      console.log(`URL changed to ${location.href}`);
    }
});

-2voto

Benjamin Points 15

Une autre façon simple de procéder consiste à ajouter un événement de clic, par le biais d'un nom de classe, aux balises d'ancrage de la page afin de détecter le moment où elles ont été cliquées. Vous pouvez alors utiliser window.location.href pour obtenir les données de l'URL que vous pouvez utiliser pour lancer votre requête ajax vers le serveur. Simple et facile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X