WauWau: HTML/Formular: Fallunterscheidung - aber wie?

Beitrag lesen

Hallo,

ich habe ein Problem, auf meiner Homepage ist unter anderem ein PopUp, welches sich (window.open) öffnet, wenn man einen Button klickt.

Das ist aber ein Problem... ;-)

Soweit klappt auch alles. Jetzt ist es mir wichtig, dass der Besucher für eine Absenden unbedingt auf diesen Link klickt!

Dann schreibe ihm das hin. Ich gehe deiner Beschreibung nach davon aus, dass es ein Formular ist, und am Ende anstatt eines <input type="submit">'s ein Link steht, der das mithilfe JavaScript's tut? Dann würde ich den Eventhandler in den <form> einbauen, also <form onSubmit="retun blabla();">, wichtig hierbei ist, dass blabla() hierbei <false> zurückgibt, damit das Formular nicht abgeschickt wird.
Du fragst dich sicherlich: Warum so umständlich? Die Lösung: Hierbei wird dann auch abgesichert, falls der Besucher anstatt auf den Link einfach auf <Enter> drückt.

Mit anderen Worten, falls der Besucher die Seite schließen will (über X in der Menüleiste) soll mit alert eine Meldung kommen, wo ich Ihn bitte, noch einmal auf den Link zu klicken. Klickt der Besucher aber auf den Link, so soll diese Meldugn NICHT kommen.

Du willst deinen Besucher zwingen, auf deiner Seite zu bleiben. Das ist nicht schön, muss ich ehrlich sagen. Denn wenn ich irgendwo bin und dann weg will, und der Autor mich daran hindern will, finde ich das nicht so toll. Das ist dann auch einer der vielen Gründe, warum ich dem IE gegenüber Opera bevorzuge: der IE kennt nämlich den EventHandler onUnload, der in den <body> "eingebaut" wird. Mit diesem ist das, was du dir da erwünscht möglich: Der Surfer kann die Seite nicht verlassen :-|

Ich brauch also eine Fallunterscheidung. Aber wie muss ich das machen? was muss ich da eingeben?

Eine "Fallunterscheidung" ist eigentlich nur so was wie

if(argument) {
  blabla; }
else {
  blabla; }

oder auch ein bisschen komplexer, usw. Deinen Wunsch zu realisieren wird etwas umständlicher. Ich will dir da mal was zeigen:

...
<body onUnload="stay_here();">
<form onSubmit="return go_on();" name="meinForm">
  <input type="text" name="Name" />
  ...
  <a href="javascript:document.meinForm.submit();">Link</a>
</form>
</body>
...

Wenn der Besucher die Webseite irgendwie verlassen zu versucht, das geht z.B. über Datei>Beenden, oder dein "X", oder über einen Klick in der Symbolleiste auf "Zurück", "home", ..., wird stay_here() aufregrufen. Diese böse Funktion warnt den unartigen Surfer, jah auf deiner Seite zu bleiben, sonst.... ;-) - ich denke mal, wenn sie "false" zurückgibt, dann wird das Fenster vielleicht nicht geschlossen, oder du machst einfach window.open(self.location), dass öffnet dann das gleiche fenster nochmal, und der Surfer muss alle Daten im Formular nochmal eingeben - zur strafe, dass er ausbrechen wollte ;-)

Doch stay_here() lädt sich nun auch, wenn der Besucher auf den Link klickt, und das geöffnete Fenster seinen Vater schließen will. Also muss go_on() eine globale Variable, z.B. "good_end", auf <true> setzten, und stay_here() prüft mit deiner super-fallunterscheidung, ob good_end true oder false ist. Ist es false, kommt die Fehlermeldung, ansonsten: Tschüss, Besucher: Du bist frei!

WauWau