Siggi Sievers: Timing-Problem nach window.open()

Hallo!

Folgendes Problem:
Ich erzeuge mit

F1=window.open("seite.html","Fenster")

Wenn ich nun direkt danach mit

aaa = F1.document.form1.input1.value

auf das andere Fenster zugreifen möchte, klappt es manchmal und manchmal nicht. Der IE5.5 mault dann rum, dass er das Objekt nicht kennt oder es null sei. Ich vermute mal ein timing-Problem - je nachdem wie schnell die Datei 'seite.html' angekommen ist, ist das Objekt bekannt oder eben nicht.
Ein Nachfrage 'if(F1.document.form1.input1)...' wird ebenfalls mit der Fehlermeldung quittiert, dass das 'F1.document.form1.input1' kein Objekt sei.

Kennt irgendjemand ein Verfahren, dass das Script nach dem 'window.open()' solange warten lässt, bis die Seite 'seite.html' vollständig in dem neuen Fenster geladen ist?

Danke und Gruss
Siggi Sievers

  1. Hall Siggi,

    ein ähnliches Problem hatte ich auch mal - zwar nicht mit separaten Fenstern, sondern mit mehreren Frames und deren Querbeziehungen. Das Prinzip ist aber das gleiche.

    Kennt irgendjemand ein Verfahren, dass das Script nach dem 'window.open()' solange warten lässt, bis die Seite 'seite.html' vollständig in dem neuen Fenster geladen ist?

    Ja. Definiere in deinem Hauptfenster eine zusätzliche JS-Variable, die du zunächst mit 0 initialisierst. Das Popup-Fenster soll sich dann bitte bei seinem Parent melden, wenn es soweit ist:

    <BODY ONLOAD="opener.ready=1">

    Jetzt brauchst du im Hauptfenster nur noch ab und zu nachzufragen, ob ready!=0 ist - das geht am besten über ein setTimeout. Die Funktion, die du mit dem Timeout aufrufst, schaut erstmal nach 'ready', und wenn's noch 0 ist, kehrt sie unverrichteter Dinge wieder zurück.

    Danke und Gruss

    Gern geschehen & Gruß zurück,

    Martin