Frank Hübner: Frame-Inhalt in neuem Fenster austauschen

Ich habe ein Script, das ein neues Fenster öffnet. Die angegebene Datei ist ein Frameset.

Nun möchte ich aus dem aufrufenden Fenster den Inhalt eines Frames des neuen Fenster austauschen.

Versucht habe ich es z.B. mit:

<pre>
F1=window.open("index.html","F1")
F1.parent.frames[0].location.href="datei.html";
</pre>

Ich bin am Ende mit meinem Latein.

  1. Hi,

    <pre>

    hehe, Forums-FAQ :-)

    F1=window.open("index.html","F1")
    F1.parent.frames[0].location.href="datei.html";

    F1 ist identisch mit F1.top; daher kannst Du das ".parent" weglassen.

    Bist Du sicher, daß zum Zeitpunkt des zweiten Befehls der Inhalt von F1 bereits so weit ist, daß ein frames[0] existiert? Sofern die beiden Befehle direkt hintereinander stehen, werden sie "beinahe zeitgleich" ausgeführt. Der HTTP-Roundtrip, um die Frameset-Datei zu laden, braucht jedoch eine gewisse Zeit... und zwar eine unbestimmte.

    Ich bin am Ende mit meinem Latein.

    Besser ist die Framesetänderung im Frameset aufgehoben; denn das weiß, wann es fertig geladen ist. Mit opener kannst Du auf das öffnende Fenster und <Zaunpfahl>darin enthaltene Variablen</Zaunpfahl> zugreifen.

    Cheatah

    1. <pre>

      hehe, Forums-FAQ :-)

      Mein erstes Posting - Anfängerfehler ;-)

      Bist Du sicher, daß zum Zeitpunkt des zweiten Befehls der Inhalt von F1 bereits so weit ist, daß ein frames[0] existiert? Sofern die beiden Befehle direkt hintereinander stehen, werden sie "beinahe zeitgleich" ausgeführt. Der HTTP-Roundtrip, um die Frameset-Datei zu laden, braucht jedoch eine gewisse Zeit... und zwar eine unbestimmte.

      Das wird's sein. Kann ich die Ausführung des 2. Befehls verzögern?

      Besser ist die Framesetänderung im Frameset aufgehoben; denn das weiß, wann es fertig geladen ist. Mit opener kannst Du auf das öffnende Fenster und <Zaunpfahl>darin enthaltene Variablen</Zaunpfahl> zugreifen.

      Ich werde weiter probieren.

      Cheatah

      Besten Dank

      1. Hi,

        Mein erstes Posting - Anfängerfehler ;-)

        btw: herzlich willkommen!

        Kann ich die Ausführung des 2. Befehls verzögern?

        Ja, mit window.setTimeout(). Das Problem ist nur, Du weißt nicht, wie lange Du verzögern mußt, und hast auch äußerst schlechte Karten, das rauszufinden. Darum meine ich ja, daß dieser Codeteil in das Frameset selber sollte - es kann geschickt prüfen, was der opener eigentlich vorhatte (wenn dieser ihm die Daten in Form einer Variable zur Verfügung stellt) und entsprechend reagieren... und zwar in exakt dem richtigen Moment.

        Ich werde weiter probieren.

        Viel Erfolg!

        Cheatah