Więc teraz, kiedy HTML5 wprowadza history.pushStatezmianę 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.historygo 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 onpopstatenie jest uruchamiany, gdy pushStatejest wywoływany (czy robię coś źle? Możesz to poprawić!).
Aktualizacja 2:
Innym (bocznym) problemem jest to, że window.locationnie jest aktualizowany podczas używania pushState(ale o tym czytałem już tutaj na SO tak myślę).
historyprzedmiot. W tym przypadku może to być niepotrzebne.