Więc teraz, kiedy HTML5 wprowadza history.pushState
zmianę historii przeglądarek, strony internetowe zaczynają używać tego w połączeniu z Ajaxem zamiast zmieniać identyfikator fragmentu adresu URL.
Niestety oznacza to, że te połączenia nie mogą być już wykrywane przez onhashchange
.
Moje pytanie brzmi: czy istnieje niezawodny sposób (włamanie?;)) Do wykrycia, kiedy witryna używa history.pushState
? Specyfikacja nie mówi nic o zdarzeniach, które są wywoływane (przynajmniej nie mogłem nic znaleźć).
Próbowałem stworzyć fasadę i zastąpiłem window.history
go własnym obiektem JavaScript, ale nie przyniosło to żadnego efektu.
Dalsze wyjaśnienie: opracowuję dodatek do Firefoksa, który musi wykrywać te zmiany i odpowiednio działać.
Wiem, że kilka dni temu było podobne pytanie, które dotyczyło tego, czy odsłuchiwanie niektórych zdarzeń DOM byłoby wydajne, ale wolałbym nie polegać na tym, ponieważ zdarzenia te mogą być generowane z wielu różnych powodów.
Aktualizacja:
Oto jsfiddle (użyj przeglądarki Firefox 4 lub Chrome 8), który pokazuje, że onpopstate
nie jest uruchamiany, gdy pushState
jest wywoływany (czy robię coś źle? Możesz to poprawić!).
Aktualizacja 2:
Innym (bocznym) problemem jest to, że window.location
nie jest aktualizowany podczas używania pushState
(ale o tym czytałem już tutaj na SO tak myślę).
history
przedmiot. W tym przypadku może to być niepotrzebne.