Kann man den unload event irgendwie abbrechen ?
Mario Scheidecker
- javascript
Hallo !
Ich stehe vor folgendem Problem:
Links im Frame ist ein Navigationsbaum, rechts die entsprechenden Formularfelder.
Tippt man was in das Formular, merke ich mir, dass der User was geaendert hat.
Waehlt er nun in der Navigation eine andere Seite an, mache ich ihn mit einem
confirm Dialog darauf aufmerksam, dass er seine Aenderungen noch nicht gespeichert
hat. Nun will ich das er auf der Seite bleibt wenn er OK drueckt. Leider wird nach dem
OK die neu angewaehlte Seite angezeigt und die Aenderungen sind futsch.
Wie kann ich den onUnload event dazu benutzen, das das anwaehlen der neuen Seite
unterbunden wird ?
Fuer jeden Ansatz bin ich dankbar !
CU Mario
Hallo Mario,
Links im Frame ist ein Navigationsbaum, rechts die entsprechenden Formularfelder.
Tippt man was in das Formular, merke ich mir, dass der User was geaendert hat.
Waehlt er nun in der Navigation eine andere Seite an, mache ich ihn mit einem
confirm Dialog darauf aufmerksam, dass er seine Aenderungen noch nicht gespeichert
hat. Nun will ich das er auf der Seite bleibt wenn er OK drueckt. Leider wird nach dem
OK die neu angewaehlte Seite angezeigt und die Aenderungen sind futsch.
Wie kann ich den onUnload event dazu benutzen, das das anwaehlen der neuen Seite
unterbunden wird ?
Prinzipiell würde ich so vorgehen:
Die Formularseite setzt im Navigationsframe eine Variable auf wahr,
beim Aufruf eines Linkes wird kontrolliert wahr oder falsch,
ist sie wahr, dann erfolgt die Abfrage per confirm-Dialog und von dessen Ergebnis machst du die Weiterverarbeitung abhängig: zurück zum Formular bzw. Link laden
ist sie falsch wird der Link ausgeführt
nicht vergessen, beim Verlassen
der Formularseite bzw. beim Absenden die Variable wieder auf 0 setzen.
Prinzip also: Linkausführung abhängig machen von der Antwort.
Ich würde das ganze mit onClick lösen, damit auch Leute ohne JS eine Chance haben die Seite zu lesen.
Viele Grüße
Antje
Hallo !
Danke fuer die Antwort... Auf die Idee bin ich auch schon gekommen, aber den Link
auf eine andere Seite loese ich nicht von der Formularseite aus. Das Problem ist halt
wenn der Benutzer unmotiviert auf einen anderen Punkt des Navigationstrees klickt
und damit im Anzeigefenster den unload event ausloest. Ich kann zwar nun eine
Funktion ausloesen mit confirm etc. aber den eigentlichen unload event kann ich
nicht mehr verhindern.... 8-(
Ich kann zwar ein Flag im Navigationstree machen, ob nicht gespeichert wurde
und bei jedem Seitenaufruf testen ob das Flag gesetzt ist und entsprechend
history.back() machen... Aber das ist einfach zu komplex und kaum noch zu
pflegen......
Wuerde mir wuenschen es gaebe sowas wie beim onSubmit="return function()"
Wenn man bei onUnload="return xyz()" machen koennte und man einfach bei
confirm entsprechend true oder false zurueckgeben koennte waere ich um einige
Probleme leichter.....
Also falls trotzdem jemand noch irgendeine Idee hat.....
BROWSER SUX !
Mario
Hallo !
Danke fuer die Antwort... Auf die Idee bin ich auch schon gekommen, aber den Link
auf eine andere Seite loese ich nicht von der Formularseite aus. Das Problem ist halt
wenn der Benutzer unmotiviert auf einen anderen Punkt des Navigationstrees klickt
und damit im Anzeigefenster den unload event ausloest. Ich kann zwar nun eine
Funktion ausloesen mit confirm etc. aber den eigentlichen unload event kann ich
nicht mehr verhindern.... 8-(
Du hast mich nicht verstanden, mein Ansatz funktioniert so:
beliebigen Link anklicken ---> Javascriptfunktion aufrufen ---> Funktion fragt: Formularseite ja oder nein
----> ja: Formular sichern? --->ja Link nicht ausführen
---> nein Link ausführen
----> nein: Link ausführen
Du brauchst an dieser Stelle das unload gar nicht, weil die Seite eben nicht verlassen wird. Der Funktionsaufruf unterbindet die Linkausführung.
Diese Funktion kann auf der Navigationsseite stehen, die Formularseite setzt nur beim Laden auf der Navigationsseite eine Variable. Da du ja offensichtlich Frame verwendest, ließ mal nach <../../tecba.htm>
Viele Grüße
Antje
Der Tip ist gut ! Das funktioniert natuerlich....
Muss ich nur noch ins Tree Applet einen Javascriptaufruf einbauen...
Nochmals Danke !
CU Mario