Hallo,
ich versuche, ein Popup-Fenster zu öffnen, in dem der Benutzer einige Angaben in ein Formular eintragen soll und dann bestätigen soll. Danach soll das Fenster geschlossen werden.
Wahrscheinlich willst du genau das nicht hören, aber solche Mehrfensteranwendungen mit Popups sind einfach aus der Mode, und zwar zurecht.
Heutzutage besteht keine Notwendigkeit mehr, neue Fenster zu öffnen, um Daten über ein Formular zu erheben und dann wieder zurückzukehren zur JavaScript-Anwendung im Ursprungsfenster. Das konnte man schon immer sequentiell machen (ohne mehrere gleichzeitig offene Fenster über mehrere Dokumente) oder schon seit mehreren Jahren innerhalb eines Dokumentes über das DOM.
Über das DOM kannst du gegebenenfalls ein Zusatzformular einblenden, das beim Absenden wieder verschwindet. Für solche sogenannte modale Fenster, die dokumentintern dargestellt werden, gibt es mittlerweile dutzende Fertigscripte. Fensterübergreifende JavaScript-Datenübergabe würde ich mir da echt nicht antun.
Ich weiß nicht, wie ich das Warten realisieren kann
Asynchron und eventgesteuert, wie alles in JavaScript. »Warten« gibt es nicht, nur die Zeit zwischen Ereignissen und der Ausführung der entsprechenden Event-Handler.
Man kann versuchen, mit JavaScript eine Logik aufzubauen »beim Schließen des Fensters lese das Formular im Dokument im Fenster aus und speichere den Wert als Variable unter dem window-Objekt des Ursprungsfensters«. Beispielsweise:
[codel ang=html]<script type="text/javascript">
function open_window () {
var new_win = window.open("2.html", "zweitfenster");
new_win.onunload = function () {
window.variable = new_win.document.forms[0].elements[0].value;
document.getElementById("ausgabe").innerHTML = window.variable;
};
}
</script>
<p><a href="javascript:open_window();">Fenster öffnen</a></p>
<p id="ausgabe">Ausgabe</p>[/code]
Das wird aber vermutlich nicht sehr zuverlässig sein, gerade mal Firefox macht das auf Anhieb.
Besser du haust unter das Formular im Popup ein einfachen Button mit onclick="opener.variable = this.form.feld.value; window.close();". Also du kopierst vom Popup-Fenster aus die Formulardaten über opener ins Ursprungsfenster. Hingegen aus Sicht der Ursprungsseite eine solche Logik zu bauen, ist ziemlich schwierig.
Mathias