Nachdem HTML5 nun eingeführt wurde history.pushState
, um den Browserverlauf zu ändern, verwenden Websites dies in Kombination mit Ajax, anstatt die Fragmentkennung der URL zu ändern.
Leider bedeutet dies, dass diese Anrufe von nicht mehr erkannt werden können onhashchange
.
Meine Frage ist: Gibt es eine zuverlässige Möglichkeit (Hack ?;)) Zu erkennen, wann eine Website verwendet wird history.pushState
? Die Spezifikation gibt nichts über Ereignisse an, die ausgelöst werden (zumindest konnte ich nichts finden).
Ich habe versucht, eine Fassade zu erstellen und durch window.history
mein eigenes JavaScript-Objekt ersetzt, aber es hatte überhaupt keine Auswirkungen.
Weitere Erklärung: Ich entwickle ein Firefox-Add-On, das diese Änderungen erkennen und entsprechend handeln muss.
Ich weiß, dass es vor einigen Tagen eine ähnliche Frage gab, die fragte, ob das Abhören einiger DOM-Ereignisse effizient wäre, aber ich würde mich lieber nicht darauf verlassen, da diese Ereignisse aus vielen verschiedenen Gründen generiert werden können.
Aktualisieren:
Hier ist eine jsfiddle (verwenden Sie Firefox 4 oder Chrome 8), die zeigt, dass sie onpopstate
nicht ausgelöst wird, wenn sie pushState
aufgerufen wird (oder mache ich etwas falsch? Sie können sie jederzeit verbessern!).
Update 2:
Ein weiteres (Neben-) Problem ist, dass window.location
es bei der Verwendung nicht aktualisiert wird pushState
(aber ich habe darüber bereits hier auf SO gelesen, denke ich).
history
Objekt ersetzt. Dies kann in diesem Fall unnötig sein.