Andreas Greiner: Reload eines Frames

Ich habe dieses Problem:

Ich öffne in einem Frame [test] ein Popup-Fenster. In diesem Popup-Fenster möchte ich, dass er mir einen Frame [bert] (in dem gleichen Fenster wie [test]) reloadet.

Ich dachte mir es geht mit:

window.opener.parent.document.location.reload()

Aber es funkt nicht. Jemand eine Idee?

  1. Du kannst keine frames ansprechen die nicht im selben frameset sind, ich hatte das problem mal mit verschachtelten framesets, also mir fällt da spontan auch keine lösung ein

    Dominic

    1. Du kannst keine frames ansprechen die nicht im selben frameset sind, ich hatte das problem mal mit verschachtelten framesets, also mir fällt da spontan auch keine lösung ein

      Dominic

      Ich vermutete, dass das über "opener" geht, da ich über opener ein geöffnetes Fenster ansprechen kann, oder liege ich da falsch?

      1. Du kannst keine frames ansprechen die nicht im selben frameset sind, ich hatte das problem mal mit verschachtelten framesets, also mir fällt da spontan auch keine lösung ein

        Dominic

        Ich vermutete, dass das über "opener" geht, da ich über opener ein geöffnetes Fenster ansprechen kann, oder liege ich da falsch?

        sicher, fenster die du mit js geöffnet hat, kannst du auch damit ansprechen, aber eben nicht die frames in dem fenster weil die framesetintern durchnummerier und benannt werden.wenn das in verschachtelten framesets nich geht, denk ich nicht das es in verschiedenen fenstern läuft.

        Dominic

        1. Hallo Andreas, hi Dominic!

          Du kannst keine frames ansprechen die nicht im selben frameset sind,

          Alle Frames eines Fensters sind in einem Frameset, und zwar in dem der in der URL-Zeile steht.

          Alle Frames innerhalb dieses Fensters lassen sich kreuz und quer ansprechen, solange sie von der gleichen Domain kommen. (Sicherheitsaspekt, nicht das du mit deinem HTML/Javascript das Postbanklogin in einem Frameset fälschen und auslesen kannst.)

          Ich vermutete, dass das über "opener" geht, da ich über opener ein geöffnetes Fenster ansprechen kann

          Über opener sprichst du das öffnende document an, also genau das, was dein Popup aufgemacht hat. (Nicht irgendwein Geöffnetes.)

          sicher, fenster die du mit js geöffnet hat, kannst du auch damit ansprechen, aber eben nicht die frames in dem fenster

          doch das geht. Man muss sich nur über die Schachtelung seiner Frames im klaren sein.

          weil die framesetintern durchnummerier

          ja

          und benannt werden.

          nein, Die Frames musst du selber benennen (mit dem name="Framename" Attribut im <frame ..> Tag).

          wenn das in verschachtelten framesets nich geht,

          doch tut es.

          denk ich nicht das es in verschiedenen fenstern läuft.

          Sobald du eine Referenze auf das andere Fenster hast ist es möglich.

          Beispiel zum rumprobieren:

          Lege folgende 7 Dateien in einem Verzeichnis an:

          set1.htm ----------------------------------------

          <frameset cols="50%,50%">
            <frame src="left.htm" name="left">
            <frame src="set2.htm" name="set2">
          <frameset>

          left.htm ----------------------------------------

          <html>
          Ich bin der Frame links
          </html>

          set2.htm ----------------------------------------

          <frameset rows="50%,50%">
            <frame src="upperright.htm" name="upperright">
            <frame src="lowerright.htm" name="lowerright">
          <frameset>

          upperright.htm ----------------------------------

          <html>
          Ich bin der Frame rechts, Unterframe oben
          </html>

          lowerright.htm ----------------------------------

          <html>
          Ich bin der Frame rechts Unterframe unten<br>
          <a href="#" onclick="window.open('popup.htm','popup','width=550,height=250'); return false;">Popup</a>;
          </html>

          popup.htm ---------------------------------------

          <html>
          <h2>Ich bin das PopUp</h2>
          Und hier kannst du den linken Frame ändern <a href="#" onClick="opener.parent.parent.left.location.href='neu.htm'; return false;">klick</a><br>
          Hier kannst du den linken Frame ebenfalls ändern <a href="#" onClick="opener.top.left.location.href='neu.htm'; return false;">klick</a><br>
          hier den Frame rechts oben ändern <a href="#" onClick="opener.top.set2.upperright.location.href='neu.htm'; return false;">klick</a><br>
          alternive: Frame rechts oben ändern <a href="#" onClick="opener.parent.upperright.location.href='neu.htm'; return false;">klick</a><br>
          und hier den rechts unten<a href="#" onClick="opener.location.href='neu.htm'; return false;">klick</a><br>
          rechts unten ... sinnlos kompliziert<a href="#" onClick="opener.parent.parent.set2.lowerright.location.href='neu.htm'; return false;">klick</a><br><br>
          Oder auch mal das rechte Frameset zerlegen <a href="#" onClick="opener.top.set2.location.href='neu.htm'; return false;">klick</a><br>
          Damit sind natürlich die 'rechtsoben' und 'rechtsunten'-Änderungen zertört und werfen Javascript-fehler.
          </html>

          neu.htm -----------------------------------------

          <html>
          Ich bin der neue Inhalt
          </html>

          -------------------------------------------------

          set1.htm im Browser öffnen und rumspielen - siehste, es geht.

          Gruss,
           Carsten

          1. Danke Carsten, so habe ich den Durchblick bekommen! Gutes Beispiel!

            Gruß,
            Andreas

  2. Hallo,

    Ich öffne in einem Frame [test] ein Popup-Fenster. In diesem Popup-Fenster möchte ich, dass er mir einen Frame [bert] (in dem gleichen Fenster wie [test]) reloadet.

    Ich dachte mir es geht mit:

    window.opener.parent.document.location.reload()

    Mit der Syntax "opener.parent.Framename.location.reload();" sollte das doch funktionieren.

    Gruss

    -> Andreas