Nebel: Link im Frame öffnen, dann Fenster schließen

Hi,

ich möchte aus einem Fenster, was aus der Hauptseiter heraus geöffnet wurden einen Link setzen, der einen Frame in der Haupseite anspricht. Danach soll das Fenster geschlossen werden.
Das mit dem Link im Frame ansprechen klappt wunderbar. Nur wenn jetzt nach dem Klick das Fenster geschlossen werden soll klappts nicht wirklich. Nur im IE gehts.

<script language="javascript" type="text/javascript">
function show(){
 window.close();
}
</script>

<a href="http://www.nebelweb.de/" target="mainframe_w"><img src=bildurl border=0 onClick='javascript:show()'>

Aber im Firefox wird einfach nur das Fenster geschlossen :(

Gruß

  1. Hallo,
    Da Du ohnehin JavaScript verwendest, kannst Du das Aufrufen im Mainframe auch gleich über JavaScript regeln - bau das einfach in die show-Funktion ein

    <script language="javascript" type="text/javascript">
    function show(){
      try {
         window.opener.top.frames['mainframe_w'].location.href =
         "http://www.nebelweb.de";
      } catch (e) {alert('Das Frameset ist nicht mehr offen!');}

    window.close();
    }
    </script>

    Gruessle,
    Joerg

    1. N'abend,

      vielen Dank! Nur öffnet sich irgendwie im mainframe_w (oder wie immer er auch heißen soll. Es ist einer von 2 Frames) die Adresse nicht. Es kommt immer der alert.

      Gruß
      Nebel

      1. Hallo,

        vielen Dank! Nur öffnet sich irgendwie im mainframe_w (oder wie immer er auch heißen soll. Es ist einer von 2 Frames) die Adresse nicht. Es kommt immer der alert.

        Also, hab mir gerade mal Deinen Aufruf angesehen:

        window.opener.frame['mainframe_w']....

        1.) muss da "frames" stehen, nicht "frame"
        2.) du hast, nach dem, was ich gesehen habe, dein Frameset nochmal in ein Frameset geschachtelt, d.h. du brauchst ggf. noch ein "parent" oder "top" mehr.

        Generell ist folgendes zu sagen:

        1.) location.href ist immer die Adresse eines Fensters oder Frames
        2.) window.opener ist das Fenster/der Frame, der das aktuelle Fenster geöffnet hat
        3.) parent in einem Frame aufgerufen liefert immer das Fenster des ganzen Framesets
        4.) top liefert immer das Basis-Frameset (ist also wie ein mehrfach aufgerufenes "parent")
        5.) frames['framename'] liefert Dir innerhalb eines Framesets den Frame mit Namen 'framename'.

        Bsp.:
        Angenommen du hast ein Frameset mit zwei Frames A und B, in B ist ein Frameset mit den frames B1 und B2. Aus B1 öffnest Du mit window.open ein Fenster, und in dem rufst du auf:

        window.opener.parent.parent.frames['A'].location.href = "http://www.google.de",

        dann wird Frame A durch Google ausgetauscht denn:

        1.) window.opener -> bringt dich auf Frame B1
        2.) parent bringt dich auf Frame B
        3.) nochmal parent bringt dich auf deine Frameset-Datei
        4.) frames['A'] bringt dich auf den Frame A

        Für Details dazu siehe
        frames-Objektreferenz

        Viele Grüße,
        Jörg

        1. Hi,

          super, jetzt klappt es!

          2.) du hast, nach dem, was ich gesehen habe, dein Frameset nochmal in ein Frameset geschachtelt, d.h. du brauchst ggf. noch ein "parent" oder "top" mehr.

          Eigentlich ist es nicht nochmal in ein Frameset geschachtelt. (Es soll für die Wallpaperseite sein http://wallpaper.nebelweb.de )
          Es musste noch ein "parent" rein.

          Mit "window.opener.parent.frames['mainframe_w'].location.href..." klappt es nun.

          Vielen Dank nochmal!