Die einzige Möglichkeit, dies wirklich zu tun (und ist, wie die 'reallysimplehistory' dies tut), ist durch die Einstellung eines Intervalls, das die aktuelle Hash zu überprüfen hält, und vergleicht es gegen das, was es vorher war, wir tun dies und lassen Abonnenten zu einem geänderten Ereignis, das wir Feuer, wenn die Hash-Änderungen abonnieren. seine nicht perfekt, aber Browser wirklich nicht unterstützen dieses Ereignis nativ.
Aktualisieren Sie diese Antwort, um sie aktuell zu halten:
Wenn Sie mit jQuery (die heute sollte etwas grundlegend für die meisten) dann eine schöne Lösung ist die Abstraktion, die jQuery gibt Ihnen durch die Verwendung seiner Ereignisse System zu hören, um Hashchange-Ereignisse auf dem Fenster-Objekt zu verwenden.
$(window).on('hashchange', function() {
//.. work ..
});
Das Schöne daran ist, dass Sie Code schreiben können, der sich nicht einmal um die Unterstützung von Hashchange kümmern muss, aber Sie müssen etwas Magie in Form einer etwas weniger bekannten jQuery-Funktion anwenden jQuery besondere Ereignisse .
Mit dieser Funktion können Sie im Wesentlichen einen Einrichtungscode für jedes Ereignis ausführen, wenn jemand zum ersten Mal versucht, das Ereignis in irgendeiner Weise zu verwenden (z. B. durch Bindung an das Ereignis).
In diesem Einrichtungscode können Sie prüfen, ob der Browser diese Funktion unterstützt. Wenn der Browser diese Funktion nicht unterstützt, können Sie einen einzelnen Timer einrichten, der auf Änderungen wartet und das jQuery-Ereignis auslöst.
Dies entbindet Ihren Code vollständig von der Notwendigkeit, dieses Unterstützungsproblem zu verstehen. Die Implementierung eines speziellen Ereignisses dieser Art ist trivial (um eine einfache, zu 98% funktionierende Version zu erhalten), aber warum sollte man das tun? wenn jemand anderes bereits .