• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

zurück-Button des Browsers deaktivieren

JanHH

Neues Mitglied
Hallo,

wenn man will, dass der back-Button des Browsers nicht funktioniert.. wenn der User also bei einem Formular auf den submit-Button klickt, auf die nächste Seite gelangt, und es nicht möglich sein soll, von da wieder zurück zur ersten Seite zu kommen.. wie geht sowas? Ich hab da schon einiges drüber gehört und diskutiert, aber wie man es nun "offiziell" macht und ob es überhaupt vernünftig geht, ist mir unklar.

paar Überlegungen:

- jemand meinte, mit javascript per Zugriff auf das History-Objekt selbige löschen. Der Haken scheint mir nur zu sein, dass man das offenbar gar nicht kann. Zugriff ja, aber weitgehend nur lesend.

- eine "leere dummyseite" dazwischenschalten, die gar nicht richtig sichtbar ist, sondern nur per forward weiterleitet. Wenn man dann auf zurück klickt, kommt man erstmal auf diese Seite und wird sofort wieder weitergeleitet. Aber mit http-eqiv geht das nicht, habs aber mal mit einem body onload=document.forms[0].submit hinbekommen. Aber das funktioniert ja nur, wenn javascript aktiviert ist. Ohne javascript bleibt die leere Seite stehen, und der User dürfte etwas irritiert sein.

Irgendwelche Ideen? Kunde verlangt danach, aber ich weiss nicht so recht wie ichs machen soll.
 
Werbung:
Ich könnte mir vorstellen, dass das irgendwie mit JavaScript funktionieren könnte. Aber wie Du ja schon selber geschrieben hast, kann JavaScript ja auch deaktiviert werden. Der Ansatz, den Du schreibst mit der "unsichtbaren" Zwischenseite ist nicht schlecht, aber etwas zu kurz gedacht (meiner Meinung nach). Wenn Du auf der Zwischenseite mittels der header()-Funktion (PHP) weiterleitest, könnte das funktionieren. Ich weiß allerdings nicht, wie sich das bei einer langsamen I-Net-Verbindung und schnellem zweifachen Klick auf die Zurückschaltfläche verhält.

Gruß thuemmy
 
Ich weiß allerdings nicht, wie sich das bei einer langsamen I-Net-Verbindung und schnellem zweifachen Klick auf die Zurückschaltfläche verhält.

Das ist im Zweifel nicht zu verhindern, aber praktisch sicherlich irrelevant. Die PHP-header()-Lösung ist der beste Weg, Meta Refresh geht im Zweifel auch, wenn kein PHP verfügbar ist (Abschnitt "Beachten Sie" bitte beachten). Von einer Veränderung des Verhaltens des Back-Buttons ist strikt abzuraten, da das völlig verwirrend ist. Internetseiten sollten so funktionieren, wie es der Nutzer gewohnt ist.

Gruß Marc
 
Werbung:
Mit http-equiv geht es gar nicht. Der Vorteil der Variante mit dem onload submit ist, dass es sich um einen Post-Request handelt, und da kommt dann erstmal der beliebte Fragedialog, ob man die Post-Daten nochmal senden möchte. Das unterbindet ein schnelles doppelklicken. Naja, mal schauen..
 
Der Vorteil der Variante mit dem onload submit ist, dass es sich um einen Post-Request handelt, und da kommt dann erstmal der beliebte Fragedialog, ob man die Post-Daten nochmal senden möchte.

Jetzt muss ich doch mal fragen, was du da eigentlich verhindern möchtest? Ich bin davon ausgegangen, es geht darum, Doppelposts beziehungsweise die Nachfrage "Post-Daten erneut senden?" beim Klick auf den Zurück-Button zu umgehen.

Die JavaScript-Variante ist für schnelles Klicken noch anfälliger als die PHP-Variante, da das JavaScript erst ausgeführt wird, wenn die Seite komplett im Client geladen ist. Zudem schaffst du mit JavaScript wieder den Fall, dass ein Klick auf den Zurück-Button zu einer Nachfrage führt. Bei beiden Varianten reicht außerdem ein einziger Klick aus, ein POST-Request wird im Browser nur für die genau vorhergehende Seite gespeichert.

Aber um es nochmal zu betonen: Ich halte das schnelle Klicken für ein Phantomproblem.

Gruß Marc
 
Was genau ist denn die PHP-header()-Variante? Ich kenn mich mit PHP nicht aus, die Seite, zu der das gehört, ist in java programmiert (Servlet).

Inhaltlich geht es um eine Online-Umfrage, es soll verhindert werden, dass der Befragte die Möglichkeit hat, mit dem Browser-back-Button zu vorherigen Fragen zurückzukommen.

Ich hab da auch nicht die Möglichkeit, selber zu entscheiden was sinnvoll und was unsinnig ist, der Kunde will es halt so...
 
Werbung:
Mit diesem Befehl wird dem Response Header des Servers ein "Location"-Eintrag hinzugefügt, der den Browser veranlasst, zu einer anderen URL weiterzuleiten. Das sollte geschehen, bevor der Browser beginnt, die Seite zu rendern. Die Möglichkeit wird es in Java auch geben.

Wenn wirklich nicht auf eine vorherige Seite zurückgegangen werden können soll, muss wohl oder übel die Funktion des Zurück-Buttons deaktiviert werden. Das würde ich als Option aber ausschließen -- ich glaube auch nicht, dass das letztlich zufriedenstellend und halbwegs sauber zu implementieren ist. Ich weiß nicht mal, ob es im Ansatz überhaupt machbar ist. -- Ein Eingriff in das Browser-UI ist jedenfalls grundsätzlich nichts, was im Verantwortungsbereich einer Webseite liegen sollte.

Eine bessere Alternative wäre es, den Status des Benutzers zu speichern und beim erneuten Absenden einer bereits bearbeiteten Seite eine Fehlermeldung auszugeben. So machen es wohl mehr oder weniger alle.

Gruß Marc
 
Es geht nicht darum, zu verhindern, dass der Benutzer zurückgeht und ein erneutes Post abschickt, sondern schon das blosse anschauen der vorherigen Seite soll verhindert werden.

Dann werd ich mich mal mit dem response header beschäftigen..
 
Werbung:
Ein redirect direkt im response-Header scheint nicht zu funktionieren. In java dürfte das die Funktion HTTPServletResponse.sendRedirect() sein, aber mit der gehts nicht.

Bisher funktioniert also nur die body onLoad=document.forms[0].submit-Variante, aber die ist ja auf javascript angewiesen.. doof, doof.
 
Eine Möglichkeit wäre, den Links auf die Seite, von der es nicht zurückgehen soll, mit target="_blank" in einem neuen Fenster zu öffnen.

So hat der Surfer nicht das Problem, dass er vielleicht auf Seiten zurück möchte und es dann nicht mehr kann.

Mich persönlich nervt das immer, wenn ich auf zurück klicke und dann aber nicht zurück komme, dann besuch ich die Site meist nicht wieder *gg*

Gruß
Toast
 
Danke für den Tipp, aber das geht auch nicht, weil es sich um eine Online-Umfrage handelt, also einen kontinuierlichen Fluss von Seite zu Seite. Da soll man halt möglichst nicht zurück blättern können.

Allerdings ist der Stand der Ermittlungen mittlerweile auch: Es _geht_ nicht ohne javascript. Aber das ist auch ok für die meisten Auftraggeber.
 
Werbung:
Zurück
Oben