Entonces, ahora que HTML5 se presenta history.pushStatepara 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.historycon 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 onpopstateno se activa cuando pushStatese llama (¿o estoy haciendo algo mal? ¡Siéntase libre de mejorarlo!).
Actualización 2:
Otro problema (lateral) es que window.locationno se actualiza cuando se usa pushState(pero ya leí sobre esto en SO, creo).
historyobjeto. Eso puede ser innecesario en este caso.