HighDots Forums  

Fenster schliessen

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss Fenster schliessen in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Philipp Lange
 
Posts: n/a

Default Fenster schliessen - 08-19-2004 , 08:31 AM






Hi,
ich möchte das Schliessen eines Fensters abfangen. Hintergrund ist, dass ein
PopUp für das Bearbeiten eines Datensatzes geöffnet wird und dadurch wird
dieser Datensatz für andere Benutzer des Intranets gesperrt. Wenn der
Benutzer das Formular im PopUp per Button schließt, wird der Datensatz
entsperrt und andere Benutzer können ihn bearbeiten. So weit, so gut

Wenn ein Benutzer das Edit-PopUp nicht mit dem "Schliessen-Button" schließt,
sondern das "X" vom Browser-Fenster benutzt, bleibt der Datensatz gesperrt.
So weit, so schlecht

Mit dem onUnload-Event habe ich es dann soweit hinbekommen, dass der
Datensatz wieder entsperrt wird.... ABER, die Unload-Funktion wird natürlich
auch gestartet, wenn der Benutzer seine Eingaben speichert (submit). Das
soll natürlich nicht passieren.

Frage ist, ob ich in der durch das onUnload-Event aufgerufenen Funktion
prüfen kann, ob der Submit-Button betätigt wurde. In dem Falle soll die
Funktion nichts machen....

Vielleicht gibt's aber auch andere Lösungsansätze, bin für jeden Tipp
dankbar.
In der FAQ über Dinge, die NICHT mit Javascript gehen, habe ich zwar
andeutungsweise schon so was gelesen, aber damit gebe ich mich nichr
wirklich zufrieden.

Und nochmal (da ich bei meiner Suche nach diesem Problem oft über diese
Diskussion gestolpert bin): Es geht nicht darum, den Benutzer zu irgendwas
zu zwingen, etc., sondern darum einen Workflow nicht zu unterbrechen.

Als einziger Workaround ist mir bisher nur noch eingefallen das Edit-PopUp
im "fullscreen" zu starten, was aber für das Design des Intranets
indiskutabel ist.....

Das gleiche Problem sollten die Coder haben, die verhindern möchten, dass
Formular-Eingaben verloren gehen, weil der Benutzer den "X" Button des
Browsers benutzt.

Letztlich sind zwei Alternativen (auf die ich komme, vielleicht gibt es
mehr?) für das Projekt akzeptabel: 1. Bei Klick auf den "X" Button, Hinweis,
dass die Seite so nicht geschlossen werden darf sondern der darfür
vorgesehene Button benutzt werden soll, oder 2. (eleganter), die Funktion,
die durch das unOnload-Event gestartet wurde, überprüft wer bzw. was den
Event bewirkt hat und reagiert entsprechend....

Ich hoffe ich habe es einigermaßen verständlich ausgedrückt und jemand hier
kann mir weiterhelfen.

Gruß,
Philipp



Reply With Quote
  #2  
Old   
Martin Honnen
 
Posts: n/a

Default Re: Fenster schliessen - 08-19-2004 , 08:40 AM








Philipp Lange wrote:


Quote:
ich möchte das Schliessen eines Fensters abfangen. Hintergrund ist, dass ein
PopUp für das Bearbeiten eines Datensatzes geöffnet wird und dadurch wird
dieser Datensatz für andere Benutzer des Intranets gesperrt. Wenn der
Benutzer das Formular im PopUp per Button schließt, wird der Datensatz
entsperrt und andere Benutzer können ihn bearbeiten. So weit, so gut

Wenn ein Benutzer das Edit-PopUp nicht mit dem "Schliessen-Button" schließt,
sondern das "X" vom Browser-Fenster benutzt, bleibt der Datensatz gesperrt.
So weit, so schlecht

Mit dem onUnload-Event habe ich es dann soweit hinbekommen, dass der
Datensatz wieder entsperrt wird.... ABER, die Unload-Funktion wird natürlich
auch gestartet, wenn der Benutzer seine Eingaben speichert (submit). Das
soll natürlich nicht passieren.

Frage ist, ob ich in der durch das onUnload-Event aufgerufenen Funktion
prüfen kann, ob der Submit-Button betätigt wurde. In dem Falle soll die
Funktion nichts machen....
window.onunload = function (evt) {
...
};
dann in
<form onsubmit="window.onunload = null;"
So sollte es keinen onunload-Handler mehr geben, wenn das Formular
verschickt wird.
Oder halt ein Flag setzen:
var submitted = false;
window.onunload = function (evt) {
if (!submitted) {
...
}
};
und dann
<form onsubmit="window.submitted = true;"

--

Martin Honnen
http://JavaScript.FAQTs.com/


Reply With Quote
  #3  
Old   
Dietmar Meier
 
Posts: n/a

Default Re: Fenster schliessen - 08-19-2004 , 08:42 AM



Philipp Lange <p.lange (AT) acuity (DOT) de> typed:

Quote:
Frage ist, ob ich in der durch das onUnload-Event aufgerufenen
Funktion prüfen kann, ob der Submit-Button betätigt wurde. In dem
Falle soll die Funktion nichts machen....
....
<head>
<script ...>
var disableUnlock = flase;
...
function unlock() {
...
}
</script>
...
</head>
<body onunload="if (!disableUnlock) unlock()">
...
<form onsubmit="window.disableUnlock = true" ...>
...
<input type="submit" ...>
...

ciao, dhgm



Reply With Quote
  #4  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: Fenster schliessen - 08-19-2004 , 08:46 AM



Dietmar Meier wrote:

Quote:
var disableUnlock = flase;
War das Absicht?


PointedEars
--
Entweder man ist konsequent oder inkonsequent.
Oder wenigstens konsequent inkonsequent.
-- ALF


Reply With Quote
  #5  
Old   
Philipp Lange
 
Posts: n/a

Default Re: Fenster schliessen - 08-19-2004 , 08:59 AM



Hi Martin,

vielen Dank!!! Genau das war's - merkwürdig, dass ich es bei meiner
Google-Odysee nirgends finden konnte....

Jetzt muss ich nur noch zusehen, dass das Fenster in der die Funktion, die
den Datensatz entsperrt, läuft, sich schließt und das Hauptfenster
aktualisiert... (was nicht ganz so trivial ist, da zu das Edit PopUp von
einem anderen PopUp aufgerufen wurde)... Naja, step by step.

Danke nochmals für die schnelle Hilfe!

Gruß,
Philipp



Reply With Quote
  #6  
Old   
Dietmar Meier
 
Posts: n/a

Default Re: Fenster schliessen - 08-19-2004 , 09:01 AM



Thomas 'PointedEars' Lahn <PointedEars (AT) web (DOT) de> typed:

Quote:
var disableUnlock = flase;

War das Absicht?
'ne intelligente Tastertur )

ciao, dhgm


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.