Best Practice: Wie man mit der Parallelität der Browser- und Website -Navigation umgeht

StackOverflow https://stackoverflow.com/questions/77645

  •  09-06-2019
  •  | 
  •  

Frage

Es ist ein bekanntes Problem für jeden Webentwickler. Soweit ich versuchte, eine gute Lösung für dieses Problem zu finden - gab es keine (oder zumindest konnte ich sie nicht finden).

Nehmen wir Folgendes an:

Der Benutzer verhalten sich nicht, wie er erwartet wurde. Das eigentliche Projekt, in dem ich arbeite, verwendet eine Navigation innerhalb des Webportals. Aber wenn der Benutzer die Button des Browsers verwendet, wird das Ganze zu Jeoprady [?] Und das Ergebnis war nicht immer vorhersehbar.

Wir haben das Struts-Framework verwendet und den Hintergrund in Formulare an einigen Stellen gespeichert, an denen wir einen Back-URL brauchten, das aus dem Hintergrund dieses Formulars gerendert wurde. Denn es gab nur ein Gesangsfeld für diese Informationen und daher war es nicht möglich, mehrere Schritte zurückzukehren.

Wenn Sie das "Streben -Flow" ändern -, was zu einem verwendet werden kann Andere Form - Diese Informationen gehen verloren.

Wenn der Benutzer es wagt, eine zu setzen Lesezeichen Irgendwo in Ihrem WebApp - diese Informationen wurden möglicherweise nie festgelegt und das Ergebnis ist wieder entweder unvorhersehbar oder nicht flexibel genug!

Meine Lösung":

Ich habe jede navigationsrelevante Seite, auf der der Benutzer besucht wurde, gespeichert stapelartig Speicherung in die Sitzung. Dies bedeutet, dass ein Navigationsweg für spätere Navigationen gesammelt und gespeichert wird.

Auf jeder Seite in der WebApp, auf der Back-Navigations involviert sind, habe ich ein selbstgemachtes Tag verwendet, das den Stapelbekämpfung in die URL einbringt.

Und das ist es. Als dieser Back-URL geklickt wurde, wurde der Stapel mit dem Inhalt des Back-URL gefüllt, der vom Benutzer geklickt wurde (was alle Informationen aus dem Stapel enthält, sobald der Back-Link gerendert wurde).

Dies ist ziemlich klar, da ein Klick auf einen Link ein klarer Status ist, in dem der Webentwickler genau weiß, wo der Benutzer "ein genau dieser Moment ist - absolut unabhängig von dem, was der Benutzer zuvor getan hat (z. B. das Drücken der Browser -Back -Taste mehrere mal). Dann basiert der Navigationsstapel auf diesem neuen Staat.

Fortsetzen:Es wird klar, dass dies nicht die beste Lösung ist. Es ermöglicht jedoch das Speichern zusätzlicher Informationen auf dem Stapel -ähnlichen Seitenparametern und einigen anderen nützlichen Dingen (weitere Entwicklungen möglich).

Also, was waren Ihre Lösungen für dieses Problem?

Prost,

Mana

War es hilfreich?

Lösung

Die Stack -Lösung klingt interessant, wird aber wahrscheinlich aufbrechen, wenn der Benutzer auf verschiedenen Registerkarten oder mit Lesezeichen "parallel" navigiert.

Ich fürchte, ich verstehe nicht wirklich, warum Sie den ganzen Zustand für jeden Benutzer behalten müssen: Idealerweise sollte das Web dem folgen REST -Prinzip und völlig Staurlos sein. Daher sollte eine einzelne URL eine einzige Ressource identifizieren, ohne den Navigationsverlauf jedes Benutzers aufrechtzuerhalten.

Wenn Ihre Web -App stark auf AJAX angewiesen ist, können Sie versuchen, so etwas wie Google Mail (zugegebenermaßen, nicht so einfach ...) zu implementieren, wo sich jede Änderung der Schnittstelle in einer Änderung der Seiten -URL widerspiegelt. Daher wird jede Seite von der aktuellen URL identifiziert und der Benutzer kann gleichzeitig navigieren oder wie gewohnt die Back -Taste verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top