Entonces, ahora que HTML5 se presenta history.pushState
para cambiar el historial de los navegadores, los sitios web comienzan a usar esto en combinación con Ajax en lugar de cambiar el identificador de fragmento de la URL.
Lamentablemente, eso significa que esas llamadas ya no se pueden detectar onhashchange
.
Mi pregunta es: ¿hay alguna forma confiable (piratear?) Para detectar cuándo se usa un sitio web history.pushState
? La especificación no establece nada sobre los eventos que se generan (al menos no pude encontrar nada).
Traté de crear una fachada y la reemplacé window.history
con mi propio objeto JavaScript, pero no tuvo ningún efecto.
Explicación adicional: estoy desarrollando un complemento de Firefox que necesita detectar estos cambios y actuar en consecuencia.
Sé que hubo una pregunta similar hace unos días que preguntaba si escuchar algunos eventos DOM sería eficiente, pero prefiero no confiar en eso porque estos eventos se pueden generar por muchas razones diferentes.
Actualizar:
Aquí hay un jsfiddle (use Firefox 4 o Chrome 8) que muestra que onpopstate
no se activa cuando pushState
se llama (¿o estoy haciendo algo mal? ¡Siéntase libre de mejorarlo!).
Actualización 2:
Otro problema (lateral) es que window.location
no se actualiza cuando se usa pushState
(pero ya leí sobre esto en SO, creo).
history
objeto. Eso puede ser innecesario en este caso.