Der einzige Weg, dies wirklich zu tun (und so macht es die 'wirklich einfache Geschichte'), besteht darin, ein Intervall festzulegen, in dem der aktuelle Hash ständig überprüft und mit dem vorherigen verglichen wird. Wir tun dies und lassen Abonnenten eine Änderung abonnieren Ereignis, das wir auslösen, wenn sich der Hash ändert. Es ist nicht perfekt, aber Browser unterstützen dieses Ereignis nicht nativ.
Update, um diese Antwort aktuell zu halten:
Wenn Sie jQuery verwenden (was heute für die meisten etwas grundlegend sein sollte), besteht eine gute Lösung darin, die Abstraktion zu verwenden, die jQuery Ihnen bietet, indem Sie das Ereignissystem verwenden, um Hashchange-Ereignisse auf dem Fensterobjekt abzuhören.
$(window).on('hashchange', function() {
//.. work ..
});
Das Schöne hier ist, dass Sie Code schreiben können, der sich nicht einmal um die Unterstützung von Hashchange kümmern muss. Sie müssen jedoch etwas Magie in Form einer etwas weniger bekannten jQuery-Funktion jQuery-Sonderereignisse ausführen .
Mit dieser Funktion können Sie im Wesentlichen Setup-Code für jedes Ereignis ausführen, wenn jemand zum ersten Mal versucht, das Ereignis auf irgendeine Weise zu verwenden (z. B. durch Bindung an das Ereignis).
In diesem Setup-Code können Sie nach nativer Browserunterstützung suchen. Wenn der Browser dies nicht nativ implementiert, können Sie einen einzelnen Timer einrichten, um nach Änderungen zu suchen und das jQuery-Ereignis auszulösen.
Das komplett entbindet Code aus , um diese Unterstützung Problem zu verstehen, die Durchführung einer besonderen Aktion Veranstaltung dieser Art trivial ist (eine einfache 98% Arbeitsversion zu bekommen), aber warum tun, wenn jemand anderes bereits hat .