Hallo dnavra,
"window.captureEvents" läuft aber leider nicht unter IE und eigentlich dort brauche ich diese Funktionalität. Gibt es dort etwas vergleichbares?
Ja: http://selfhtml.teamone.de/dhtml/modelle/microsoft.htm#event_handler
Mit
if (document.all)
müsstest Du die Unterscheidung treffen können.
Als eine andere alternative Lösung wäre wünschenswert, dass immer wenn der Benutzer über die Browsernavigation eine Seite zurückgeht, dass man dann automatisch in der Historie wieder eine Seite nach vorne blättert. Das setzt aber wieder voraus, dass man mitbekommt, dass der Benutzer eine Seite zurückgeblättert hat. Man müsste aber dann auf der vorherigen Seite das mitkriegen und darauf automatisch reagieren. Keine Ahnung ob so etwas überhaupt geht, ohne irgendwelche drüberliegende Framesets zu benutzen.
Doch, das geht: Du arbeitest Doch sicherlich in Deiner Applikation mit Sessions, oder? Dann kannst Du alle Seiten, auf die der Benutzer zugreift, in der Session protokollieren. Wenn er dann auf "Zurück" klickt, kannst Du das erkennen und daraufhin eine HTTP-302-Weiterleitung auf die nächste gewünschte Seite machen. (oder statt einer HTTP-Weiterleitung ein Meta-Refresh oder was mit JavaScript)
Alternative:
Jedesmal, wenn Du ein Formular verarbeitest, wird die Seite, die dabei erzeugt wird, in einem Cache auf dem Server zwischengespeichert und mit einer ID versehen. Diese Seite wird dann nicht direkt an den Browser geschickt, sondern es wird eine 302-Weiterleitung auf eine Cache-Anzeigeseite gemacht. So wird die Verarbeitungslogik nur einmal ausgeführt, da immer nur die zwischengespeicherte Ergebnisseite aufgerufen wird.
Oder Du könntest Dir nur ein paar Statusinformationen für diese Cache-ID mitspeichern und dann anhand der Statusinformationen die Seite rekonstruieren. Und wenn die Seite zum zweiten Mal aufgerufen wird, könntest Du _zusätzlich_ noch eine Meldung ausgeben, dass die Seite schonmal aufgerufen wurde und außerdem noch alle Formulare deaktivieren.
Es hängt halt vom Einzelfall ab, was eventuell sinnvoll ist.
Viele Grüße,
Christian