molily: Browser-Event bei Forward und Backward Browsing

Beitrag lesen

Hallo,

Mit AJAX hat man nun aber das grundsätzliche Problem, dass die Browser "Zurück"- und "Vorwärts"-Buttons nicht mehr das gewünschte Ergebnis zeigen, da das AJAX-Konzept ja davon lebt, dass man an den normalen Browser-Mechanismen vorbei Elemente einer Seite dynamisch selbst lädt. Die Browser-Historie bekommt davon gar nichts mit.

Ich habe mir nun ein Konzept entwickelt, wie ich die Browsing-Historie auf Anwendungs-Ebene mitführen, und Im AJAX-Support-Script die Historie dann selbst abarbeiten könnte.

Findest du das nicht etwas absurd? Der Browser stellt eine wichtige Funktionalität zur Verfügung, durch eine vermeintliche Verbesserung der Seite hebelst du sie aus, um sie dann wieder neu zu implementieren, nur sie funktioniert nicht gleichermaßen. Solche Geschichten liest man hier jeden Tag, zumeist gibt es keinen Ausweg, wenn man erst einmal diesen Weg eingeschlagen hat.

Notwendige Voraussetzung dafür wäre aber, dass ich bein Klick auf "Zurück" und "Vorwärts" ein Event bekomme, damit ich mein Historie im Javascript bearbeiten kann.

Einen solchen Event gibt es nicht.
Ich sehe auch nicht, inwiefern dir das genannte onunload weiterhelfen soll - damit kannst du zwar feststellen, wenn sich die Seite ändert, aber dies verhindern und stattdessen deine JavaScript-Logik zwischenschalten, das geht nicht.
onbeforeunload gäbe es noch, wäre aber auch für deine Zwecke das absolute Gegenteil von benutzerfreundlich.

Hat jemand eine Idee, wie man dieses Problem lösen könnte?

Du manövrierst dich mit Ajax in Probleme, die du ohne überhaupt nicht hättest. Meinst du wirklich, dass diese Ajaxifizierung einen überzeugenden Mehrwert bietet?

Es gäbe Methoden, mit denen du dem Browser bei einer Änderung einen Seitenwechsel vorgaukeln könntest, z.B. durch die Änderung der URL (speziell des Ankers, sodass sich die Seite nicht wirklich ändern muss) eines versteckten iframes. Sobald sich darin durch die Zurück- oder Vorwärts-Funktion die URL ändert, könntest du den entsprechenden Status der Seite wiederherstellen. Allerdings wäre das absoluter Overkill

Alternativ wäre es auch eine Lösung, wenn man die Browser "Zurück" und "Vorwärts"-Buttons (und den "Zurück"-Menüeintrag) deaktivieren könnte, und stattdessen eigene Buttons dafür anbietet. Geht das??

Selbstverständlich nicht.

Deine Beispielseite funktioniert übrigens bei mir nicht, nach einem Klick auf einen Link tut sich außer einem JavaScript-Fehler nichts.

Mathias