Jedynym sposobem, aby to naprawdę zrobić (i to, w jaki sposób robi to „reallysimplehistory”), jest ustawienie interwału, który sprawdza bieżący skrót i porównanie go z tym, co było wcześniej, robimy to i pozwalamy subskrybentom subskrybować zmienione zdarzenie, które uruchamiamy, jeśli skrót się zmieni ... nie jest idealny, ale przeglądarki naprawdę nie obsługują tego zdarzenia natywnie.
Zaktualizuj, aby zachować aktualność tej odpowiedzi:
Jeśli używasz jQuery (która dziś powinna być w pewnym stopniu fundamentalna), dobrym rozwiązaniem jest użycie abstrakcji, którą daje ci jQuery, używając systemu zdarzeń do nasłuchiwania zdarzeń hashchange na obiekcie okna.
$(window).on('hashchange', function() {
//.. work ..
});
Fajną rzeczą jest to, że możesz pisać kod, który nie musi się nawet martwić o obsługę hashchange, jednak musisz zrobić trochę magii, w postaci nieco mniej znanej specjalnej funkcji jQuery jQuery .
Dzięki tej funkcji zasadniczo można uruchomić kod instalacyjny dla dowolnego zdarzenia, za pierwszym razem, gdy ktoś próbuje użyć zdarzenia w jakikolwiek sposób (np. Powiązanie ze zdarzeniem).
W tym kodzie instalacyjnym możesz sprawdzić, czy natywna obsługa przeglądarki jest obsługiwana, a jeśli przeglądarka natywnie tego nie implementuje, możesz skonfigurować pojedynczy licznik czasu, aby sondować zmiany i wyzwalać zdarzenie jQuery.
To całkowicie odsuwa twój kod od konieczności zrozumienia tego problemu wsparcia, implementacja tego rodzaju specjalnego zdarzenia jest trywialna (aby uzyskać prostą 98% działającą wersję), ale po co to robić, skoro ktoś już to zrobił .