Philipp Giere: window.open geht nicht ohne vorheriges alert()

Hallo!
Ich habe folgendes Phänomen in meiner Anwendung: Ich habe zwei Fenster, in denen das eine von einem andere geöffnet wird. Wird in dem einen ein Formular geöffnet sollen die Werte in das andere übertragen werden.
Gemacht wird das mit einer Javascript Funktion, die bei onChange im Formular aufgerufen wird. Hier wird mit window.open() das andere Fenster geöffnet. Es funktioniert, wenn man ( zum Beispiel beim Debuggen) ein alert() vorher aufruft. Wenn man das alert weglässt, gehts nicht.

Jemand eine Idee?

Danke!
Philipp Giere

  1. Hallo, Philipp!

    onChange ... das andere Fenster geöffnet ... wenn man ... alert() vorher aufruft.

    was macht das alert? eine zeitverzögerung.
    was passiert in der zeit? das zweite fenster baut sich auf.
    worauf musst du also mit dem übertragen der daten warten? darauf, das sich das zweite fenster fertig aufgebaut hat.
    wie machst du das? 4 möglichkeiten:
       1. du prüfst nach einem timeout immer wieder, ob in dem neuen fenster schon alle von dir benötigten elemente existieren und startest dann die datenübertragung.
       2. du löst die datenübertragende funktion aus dem zweiten fenster heraus aus, undzwar mit einem script, das _unter_ den benötigten elementen steht.
       3. du übergibst die felder und deren werte in der url des neuen fensters, von wo aus sie ein script in diesem fenster wieder ausliest.
       4. du schreibst die daten in einen cookie, von wo aus sie ein script in diesem fenster wieder ausliest.

    freundl. Grüsse aus Berlin, Raik

    1. Hallo Raik!

      Es scheinen in der Tat ein Timingprobleme zu sein. Merkwuerdigerweise funktioniert auch alles, wenn ich nach dem window.open noch ein location.href auf das erzeugte Objekt schicke.

      Gruss aus Wiesbaden!
      Philipp

      Hallo, Philipp!

      onChange ... das andere Fenster geöffnet ... wenn man ... alert() vorher aufruft.

      was macht das alert? eine zeitverzögerung.
      was passiert in der zeit? das zweite fenster baut sich auf.
      worauf musst du also mit dem übertragen der daten warten? darauf, das sich das zweite fenster fertig aufgebaut hat.
      wie machst du das? 4 möglichkeiten:
         1. du prüfst nach einem timeout immer wieder, ob in dem neuen fenster schon alle von dir benötigten elemente existieren und startest dann die datenübertragung.
         2. du löst die datenübertragende funktion aus dem zweiten fenster heraus aus, undzwar mit einem script, das _unter_ den benötigten elementen steht.
         3. du übergibst die felder und deren werte in der url des neuen fensters, von wo aus sie ein script in diesem fenster wieder ausliest.
         4. du schreibst die daten in einen cookie, von wo aus sie ein script in diesem fenster wieder ausliest.

      freundl. Grüsse aus Berlin, Raik