Domino 9 und frühere Versionen > ND6: Entwicklung
Web-Design: "Zurück" verhindern
Glombi:
Folgendes Problem: Ich habe eine Anwendung, in der der Web-User ein Dokument mit Speichern & Schließen verlassen kann. Daraufhin läuft ein Script-basierter Agent, der gewisse Felder setzt und den User dann die Ausgangsansicht anzeigt.
Wie verhindere ich, dass der User mit "Zurück" wieder ins Dokument kommt?
Über die Ansicht soll er natürlich in das Dokument kommen.
Irgendwie stehe ich da nun auf dem Schlauch.
Danke für alle Tipps.
Andreas
Thomas Schulte:
gar nicht.
Du kannst zwar die Menü Leiste ausblenden, aber im Extremfall gibt jemand einfach Javescript:Goback() ein und das wars dann.
Wenn du das verhindern willst dann musst du über eine Hilfskonstruktion gehen eine DocEditID die immer unique ist oder so was.
Glombi:
Ich werde mal folgendes versuchen:
@SetHTTPHeader("Cache-Control";"no-cache");
@SetHTTPHeader("Pragma" Content";"no-cache");
@SetHTTPHeader("Expires";"0")
Oder spricht was dagegen?
Andreas
Ayhan:
Hi,
es geht dir soviel ich verstanden habe darum, dass der user auf diese "Zwischenseite" nicht gelangen soll, da dies evtl. in deiner Anwendung zu Fehlern führen könnte.
Ich habe mal in einer solchen Anwendung (das aktuelle Dokument wird bei mir als XML auf dem File-System abgelegt, dann parse ich das XML auf gültigkeit, nehme evtl. korrekturen vor, danach erstelle ich daraus ein PDF etc.; an sich sollte dies nur dann passieren, wenn der User wirklich nur auf Speichern klickt und nicht wenn der User ausversehen auf ZURÜCK in seinem Browser klickt) folgendes gemacht:
1. Der User befindet sich in einem Dokument im Bearbeitungsmodus
2. Möchte er das Dokument speichern drückt er auf den Knopf speichern.
3. Nun öffnet sich ein kleines PopUp-Fenster (hier übergebe ich die Aktion [speichern] + die DOK-ID). Dieses Pop-UP ist eine weitere Maske in der Anwendung mit einem WQO-Agenten. Dieser lädt über eine JS-Funktion die ich über ein RTITEM generiere, nach erfolgreicher Ausführung die ursprungsdokument im Lesemodus neu auf (<script>opener.document.location.href='/db.nsf/ansicht/id?OpenDocument'</script> (die ID des entsprechenden Dokumentes habe ich ja über das PopUP als Parameter mitgegeben.
Damit verhindere ich, dass ein User direkt über den Zurück-Link die Verarbeitungsmaske aufruft. Im IE kann man sogar das Pop-Up-Fenster verstecken (das Fenster an sich wird von PopUP-Blockern nicht geblockt, da der User durch einen Klick den PopUP aufruft und dieser nicht automatisch startet).
Hilft das evtl. weiter?
Nachtrag:
Natürlich kannst du dem JS auch sagen, dass er statt das Dokument im Lesemodus neuzuladen eine Ansicht öffnen soll. Klickt der Benutzer nun in diesem Fenster auf zurück, landet er wieder in seinem Dokument. Mit deinen zusätzlichen Headern verhinderst du evtl. Caching.
flaite:
--- Zitat von: Glombi am 22.08.06 - 09:30:30 ---@SetHTTPHeader("Cache-Control";"no-cache");
@SetHTTPHeader("Pragma" Content";"no-cache");
@SetHTTPHeader("Expires";"0")
Oder spricht was dagegen?
--- Ende Zitat ---
Ich denke, dass dies nicht reicht.
So schaltest du den cache aus. Aber der Request geht immer noch gegen den Server und läd von dort eine neue Seite.
Was du aber willst ist die history ausschalten. Das sind afaik 2 verschiedene Sachen.
Im Grunde handelt es sich hier um eines der härtesten Probleme der Webprogrammierung.
Mit diesem google Search erhälst du einige mehr oder weniger umfassende Erörterungen:
http://www.google.de/search?hl=de&q=disable+back+button+browser&btnG=Google-Suche&meta=
Der Vorschlag von Ayhan hört sich eigentlich gangbar an.
Es gibt vielleicht noch andere trickige Möglichkeiten, die ich aber nie ausprobiert habe.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln