# Refresh (F5 oder Refresh Button) abfangen oder anderweitig reagieren?



## Herr_M (3. September 2009)

Hallo zusammen,

Ich habe folgendes Problem:

Eine "Website" wird über eine bestimmte URL geladen 
z.B. http://localhost:8456/foo/bar.do 
Die gesamte Website arbeite mit JSP Struts und AJAX.

Auf der Seite gibt es über ein Formular die Möglichkeit über ein DropDown (<select>)
verschiedene Ansichten des gezeigten Inhalts auszuwählen.
Über ein onChange Event wird dann mittels AJAX die Ansicht verändert und gegebenenfalls auch neue zusätzliche Infos im Hintergrund aus der Datenbank geladen.

Führt nun der Besucher der Seite einen Refresh aus (z.B durch drücken von F5) wird die URL http://localhost:8456/foo/bar.do ja erneut geladen, aber mit der "Default" Auswahl mit der die Seite zu Begin geladen wurde.
Die Seite sollte aber mit den Werten der aktuellen Auswahl nochmal geladen werden (wenn überhaupt).

Gibt es eine Möglichkeit den Refresh abzufangen und die Seite mit den im Form ausgwählten Werte zu laden?
Oder gibt es eventuell einen andern Ansatz, diesen hässlichen Effekt zu verhindern?

Gruß

Herr_M


----------



## ComFreek (3. September 2009)

Hallo Herr_m,

wenn ich das richtig verstehe, willst du das beim Refresh dieselben Info geladen werden, die vorher durch das DropDown-Menü ausgewählt wurden.

Ich hatte das selbe Problem. Du kannst ja mit Javascript ein Cookie schreiben, das den Index des DropDown-Menü speichert!

*Edit:*  Laut SelfHTML gibt es kein Event-Handler für das erneute laden der Seite. Hier eine Übersicht von SELFHTML.


----------



## kuddeldaddeldu (3. September 2009)

Hi,

Du könntest die Auswahl als Anker in die URL schreiben und bei Aufruf der Seite diesen prüfen. Sven hat die Methode kürzlich in diesem Thema erklärt. 

LG


----------



## Herr_M (3. September 2009)

Hallo ComFreek,

Ich hab genau das vor, was du glaubst verstanden zu haben.

Das mit dem Cookie funktioniert eigenartigerweise nur zum Teil.
Die Auswahl des DropDown z.B. bleibt mir erhalten...
wohingegen die anzgeigten Daten wieder die aus der Standard/Default Auwahl sind.

Das liegt mit ziemlicher Sicherheit daran in welcher Reihenfolge die Daten für die einzelnen angezeiten Elemente geladen werden. Und leider wird dabei die Auswahl der Dropdownbox nicht als Select Kritierium genutzt, sondern das was als Default Wert gespeichert ist.

Um jetzt quasi die Daten zu laden, die die Auswahlbox vorgibt, müsste ich die selbe "function" Aufrufen wie bei beim onChange Event der DropDownbox...

UPDATE:

@kuddeldaddeldu

Danke für den Hinweis, ist auch echt interessant und wäre unter "einfachen" Umständen auch sicherlich ne Lösung, da die angesprochene
Website allerdings nur ein kleines Rädchen in einem sehr Großen Ganzen ist, das ich selbst nicht überblicke, führt dieser Ansatz dann leider 
zu noch mehr ungewollten Seiteneffekten. Da werden die User wohl oder Übel damit leben müssen, dass man besser auf den Refresh Button im Formular klickt und nicht auf F5 drückt. 

LG

... momentmal... hab da eine Idee, vielleicht geht es ja wenn ich das ganze im onLoad Event...


----------

