Quindi ora che HTML5 introduce history.pushState
per cambiare la cronologia dei browser, i siti Web iniziano a usarlo in combinazione con Ajax invece di cambiare l'identificatore di frammento dell'URL.
Purtroppo ciò significa che tali chiamate non possono più essere rilevate da onhashchange
.
La mia domanda è: esiste un modo affidabile (hack?;)) Per rilevare quando viene utilizzato un sito Web history.pushState
? Le specifiche non indicano nulla sugli eventi generati (almeno non sono riuscito a trovare nulla).
Ho provato a creare una facciata e sostituito window.history
con il mio oggetto JavaScript, ma non ha avuto alcun effetto.
Ulteriore spiegazione: sto sviluppando un componente aggiuntivo per Firefox che deve rilevare queste modifiche e agire di conseguenza.
So che qualche giorno fa c'era una domanda simile che chiedeva se ascoltare alcuni eventi DOM sarebbe stato efficace, ma preferirei non fare affidamento su questo perché questi eventi possono essere generati per molte ragioni diverse.
Aggiornare:
Ecco un jsfiddle (usa Firefox 4 o Chrome 8) che mostra che onpopstate
non viene attivato quando pushState
viene chiamato (o sto facendo qualcosa di sbagliato? Sentiti libero di migliorarlo!).
Aggiornamento 2:
Un altro problema (laterale) è che window.location
non viene aggiornato quando si utilizza pushState
(ma ho letto di questo già qui su SO penso).
history
oggetto. Ciò potrebbe non essere necessario in questo caso.