Andreas: Hauptbrowserfensters aus Pop-Up-Fenster steuern

Ich möchte aus einem Pop-Up-Fenster heraus den Inhalt des Haupt-Browserfensters ändern (eine anderes Frameset laden).
Dies realisiere ich mit folgendem Java-Script-Code:

<script language="JavaScript"><!--
function load(file,target) {
        target.window.location.href = file;
}
//--></script>

<a href="javascript:load('b.html',top.opener)">Hauptseite laden</a>

Mein Problem:
Im Hauptfenster wird mein komplettes Frameset (b.html) immer nur in den oberen oder in den unteren Frame geladen (im Hauptfenster befindet sich schon ein Frameset). D.h. das "b.html" läd sich nie komplett als eigenständiges Framset sondern immer nur in einem der schon vorhanden Frames des Hauptbrowserfensters...

Kann mir hier jemand weiterhelfen?

  1. ... schon mal mit opener.parent versucht?

    m.

    1. ... schon mal mit opener.parent versucht?

      m.

      Jo, danach hat's aber irgendwie garnichtmehr geklappt...
      Irgendwo muß man garantiert was mit "parent" einstellen, nur wo?

  2. Aloha!

    Ich möchte aus einem Pop-Up-Fenster heraus den Inhalt des Haupt-Browserfensters ändern (eine anderes Frameset laden).
    Dies realisiere ich mit folgendem Java-Script-Code:

    <script language="JavaScript"><!--
    function load(file,target) {
            target.window.location.href = file;
    }
    //--></script>

    <a href="javascript:load('b.html',top.opener)">Hauptseite laden</a>

    Mein Problem:
    Im Hauptfenster wird mein komplettes Frameset (b.html) immer nur in den oberen oder in den unteren Frame geladen (im Hauptfenster befindet sich schon ein Frameset). D.h. das "b.html" läd sich nie komplett als eigenständiges Framset sondern immer nur in einem der schon vorhanden Frames des Hauptbrowserfensters...

    Du bist schon fast richtig.

    Aber damit du für die Zukunft gerüstet bist, noch ein wenig Erklärung.

    Wie ein Frameset javascriptmäßig angesprochen werden kann, ist bekannt. Wie man Popupfenster ansprechen kann, ist auch klar (fenstername = window.open(), fenstername.location.href).  Rückwärts aus dem Popupfenster geht das über opener (opener.location.href).

    Du muß nun einfach beides schlau kombinieren und dabei bedenken, daß das Popupfenster zu dem Teilframe gehört, in dem window.open ausgeführt wurde.

    Also:
    Frameset im Hauptfenster: links + rechts.
    In "rechts" wird ein Popup geöffnet, das "popup" heißt.
    Im Popup wird eine Datei geladen.

    Folgende Zugriffsmöglichkeiten auf "links" existieren jetzt.
    Von links aus: self.location.href
    Von top aus: links.location.href
    Von rechts aus: top.links.location.href
    Vom Popup aus: opener.top.links.location.href (das Popup ist ein Kindfenster von rechts!)

    Wenn im Popup noch ein Frameset oben + unten geladen würde, käme man da so raus:

    Von oben aus: top.opener.top.links.location.href

    Wenn man von top aus zum Popup will, gibt es dafür diese Möglichkeit:
    top.rechts.popup.location.href
    Oder wenn das Frameset darin geladen ist:
    top.rechts.popup.unten.location.href

    Mit anderen Worten: Die Lösung für dein Problem ist, statt "top.opener" einfach "opener.top" zu verwenden, um das oberste Fenster desjenigen Browsers anzusprechen, der das Popup geöffnet hat.

    - Sven Rautenberg