Hallo, Forum!
Wie ist es möglich, abzufragen, ob man über die "zurück-Taste" des Browsers auf die Seite gekommen ist. Ich habe nämlich vor, in obengenanntem Fall durch location.replace die Adresse der folgenden, bzw letzten Seite zu ersetzen. Dadurch will ich verhindern, dass man alte Eingaben von vorhergehenden Benutzern, die meine Seite besucht haben, sehen kann.
Dein Vorhaben wird in ECHTEN Browsern scheitern.
Die Zurück-Taste im Browser ist eine History-Funktion (genau wie die Vorwärts-Taste). Das bedeutet: Der User kommt zu den Seiten zurück, die er schon besucht hat, und sieht sie in dem Zustand, wie er sie verlassen hat.
Dieses Verhalten ist so in irgendeiner RFC, deren Nummer ich gerade vergessen habe, vorgeschrieben.
Opera hält sich an die RFC. Da hast du keinerlei Chance, eingegebene Texte in Formularen verschwinden zu lassen. Ich würde sogar vermuten, daß auch "onload" bei einer Zurück-Aktion nicht ausgelöst wird, also wird "onload" Formularlöschen auch nicht funktionieren.
Andere Browser sind in diesem Punkt nicht standardkonform. Die fragen bei "zurück" immer beim Server nach, ob die Seite noch aktuell ist. Deshalb _kann_ es bei manchen Browsern funktionieren, das Gültigkeitsdatum in die Vergangenheit zu legen und mit allen möglichen Meta- und Headerinformationen Caching zu verhindern. Aber wie gesagt: Das funktionier bei "Zurück" nicht zuverlässig - würden sich alle Browser an den Standard halten (womit irgendwann mal zu rechnen ist), dann würde es garnicht funktionieren.
Wenn irgendwelche Restdaten nicht zu sehen sein sollen, bleibt nur, das Browserfenster zu schließen und dadurch die History zu löschen. Insofern ist self.close() die einzige Möglichkeit, das zu erreichen, was du willst - wenn der Surfer dann noch die Sicherheitsabfrage bestätigt (die sich NICHT unterdrücken läßt), dann hast du dein Ziel erreicht.
PS: Es war mir schon manchesmal sehr hilfreich, ein umfangreich ausgefülltes Formular durch die "Zurück"-Taste wieder zu retten, weil der Server irgendwelchen Mist gebaut hat, die Verbindung nicht funktionierte oder sonstiges.
- Sven Rautenberg