Alors maintenant que HTML5 introduit history.pushState
pour modifier l'historique des navigateurs, les sites Web commencent à l'utiliser en combinaison avec Ajax au lieu de changer l'identifiant de fragment de l'URL.
Malheureusement, cela signifie que ces appels ne peuvent plus être détectés par onhashchange
.
Ma question est la suivante: existe-t-il un moyen fiable (piratage?;)) De détecter quand un site Web utilise history.pushState
? La spécification n'indique rien sur les événements déclenchés (au moins je n'ai rien trouvé).
J'ai essayé de créer une façade et window.history
je l'ai remplacée par mon propre objet JavaScript, mais cela n'a eu aucun effet.
Explication supplémentaire: je développe un module complémentaire Firefox qui doit détecter ces changements et agir en conséquence.
Je sais qu'il y avait une question similaire il y a quelques jours qui demandait si l'écoute de certains événements DOM serait efficace, mais je préfère ne pas me fier à cela car ces événements peuvent être générés pour de nombreuses raisons différentes.
Mettre à jour:
Voici un jsfiddle (utilisez Firefox 4 ou Chrome 8) qui montre qu'il onpopstate
ne se déclenche pas lors de l' pushState
appel (ou est-ce que je fais quelque chose de mal? N'hésitez pas à l'améliorer!).
Mise à jour 2:
Un autre problème (secondaire) est qu'il window.location
n'est pas mis à jour lors de l'utilisation pushState
(mais j'ai déjà lu à ce sujet ici sur donc je pense).
history
objet. Cela peut être inutile dans ce cas.