Max Richter: Adressieren von Frames über Frameset hinaus

Hallo!

Ich habe eine Seite, in der es 2 ineinandergebettete Framesets gibt:

1.Frameset
  _topFrame
  _leftFrame
  _mainFrame
    2.Frameset
      _head
      _inhalt

nun verwende ich schon ein Java-Script für alternative Grafiken im ersten Frameset. Und zwar um die Menügrafiken des leftFrame auch über den mainFrame steuern zu können (z.B. bei hovern über Links)
Das klappt gut mit:
parent.leftFrame.document.image1.src = eval(name + "alton.src");

und so weiter.

Jetzt bin ich in der Situation, dies auch aus dem _head Frame machen zu müssen (für ein zurück-Link).
Aber mit "parent" kann man ja nur innerhalb eines Frameset adressieren.

wie adressiere ich _leftFrame jetzt von head aus?

Danke

  1. Hallo Max

    wie adressiere ich _leftFrame jetzt von head aus?

    Zugriff auf verschachtelte Fensterobjekte

    Auf Wiederlesen
    Detlef

    --
    - Wissen ist gut
    - Können ist besser
    - aber das Beste und Interessanteste ist der Weg dahin!
    1. Hallo Max

      wie adressiere ich _leftFrame jetzt von head aus?

      Zugriff auf verschachtelte Fensterobjekte

      Auf Wiederlesen
      Detlef

      Vielen Dank, im Prinzip ist das genau das, was ich gesucht habe.
      Allerdings habe ich das jetzt umgesetzt:

      Noch mal meine Frameset-Verschachtelung:

      1.Frameset
        _leftFrame
          _topFrame
          _mainFrame
            ->2.Frameset
              _head
              _inhalt

      also habe ich aus _head nun herausadressiert:

      parent.parent.leftFrame.document...

      auch versucht

      top.leftFrame.document....

      Definiert sind eigentlich imageon, imageoff, imagestay. Beim Link selbst in _head soll verschiedenes bei onmousehover, onmouseout und onclick passieren. Jetzt passiert bei mouseout nur etwas, aber auch nicht das, was ich will. Die Funktionen und der Eintrag in <body></body> sind gleich geblieben.
      Naja, immerhin tut sich ja was...

      Hier ist das vollständige Script:

      <script type="text/JavaScript">
      <!--

      if (navigator.appVersion.indexOf("2.") != -1){
              check = false;
              }
      if ((navigator.appVersion.indexOf("3.") != -1) && (navigator.appName.indexOf("Explorer") != -1)){
              check = false;
              }
      else {
              check = true;
              }

      image1alt = new Image();
      image1alt.src = "Bilder/Neues_Design/js_home_aus.gif";
      image1alton = new Image();
      image1alton.src = "Bilder/Neues_Design/js_home_switch.gif";
      image1altstay = new Image();
      image1altstay.src = "Bilder/Neues_Design/js_home_an.gif";

      function imageon(name)   {
              parent.parent.leftFrame.document.image1.src = eval(name + "alton.src");
      }
      function imageoff(name)  {
              parent.parent.leftFrame.document.image1.src = eval(name + "alt.src");
      }
      function imagestay(name)  {
              parent.parent.leftFrame.document.image1.src = eval(name + "altstay.src");
      }
      NN3 = true;

      function on(name)  {
       if (check == true){
        imageon(name);
       }
      }
      function off(name)  {
       if (check == true){
        imageoff(name);
       }
      }
      function stay(name){
       if (check == true){
           imagestay(name);
       }
      }
      // -->
      </script>

      Und beim link dann:

      <a id="bio_head" name="bio_head" href="../home.html" onmouseover="on('image1');" onmouseout="off('image1');" onClick="stay('image1');" target="mainFrame">zurück</a>

      Es ist das gleiche Script, welches ich in _mainFrame nutze, nur das da natürlich nur
      parent.leftFrame.document......
      steht

      Da funktioniert es...

      Ach ja, zum Schluss:
      Natürlich ist im _leftFrame ein entsprechendes image1 definiert!

      Was ist falsch?

      1. Was ich nicht verstehe ist:

        Warum funktioniert das Script nicht mehr, wenn ich nur die Adressierung verändere?

        Wieso funktioniert:
        function imageon(name)   {
                parent.parent.leftFrame.document.image1.src = eval(name + "alton.src");
        }
        function imageoff(name)  {
                parent.parent.leftFrame.document.image1.src = eval(name + "alt.src");
        }
        function imagestay(name)  {
                parent.parent.leftFrame.document.image1.src = eval(name + "altstay.src");
        }

        und folgendes
        in _mainFrame

        aber nicht

        parent.parent.leftFrame
        oder
        top.leftFrame

        und der Rest???

        Das ist doch unlogisch, ich habe doch nichts verändert!

      2. Hallo Max

        if (navigator.appVersion.indexOf("2.") != -1){
        ...
        if ((navigator.appVersion.indexOf("3.") != -1) && (navigator.appName.indexOf("Explorer") != -1)){
        ...

        Warum fragst du hier Browserversionen ab, statt abzufragen ob der Browser
        die benötigten Objekte kennt?

        parent.parent.leftFrame.document.image1.src = eval(name + "alton.src");
        ...
                parent.parent.leftFrame.document.image1.src = eval(name + "alt.src");
        ...
                parent.parent.leftFrame.document.image1.src = eval(name + "altstay.src");

        Suche besser eine Möglichkeit ohne eval.

        Was ist falsch?

        Was sagt die Javascript-Konsole?
        Was genau fnktioniert nicht?
        Wird das jeweilige Script nicht aufgerufen, oder findet es die Bildobjekte
        nicht?
        (Einfügen von alert('hier kommt das Script hin'); hift oft.)

        Ich bekomme das anhand deiner Angaben nicht wirklich zusammengesetzt.
        Kannst du dein Beispiel online stellen, damit es komplett sichtbar ist.

        Auf Wiederlesen
        Detlef

        --
        - Wissen ist gut
        - Können ist besser
        - aber das Beste und Interessanteste ist der Weg dahin!
        1. Hellihello Max,

          mit top.framename kommst du vermutlich besser zurecht, als da immer die parentse raufzuhübbeln.

          ein alert(top.framexyz) oder alert(top.framexyz.document.getElementsById("body")[0].innerHTML) bringt vielleicht auch Erhellung.

          frankx

          1. Hallo frankx

            Hellihello Max,

            Seit wann heiße ich Max?

            Auf Wiederlesen
            Detlef

            --
            - Wissen ist gut
            - Können ist besser
            - aber das Beste und Interessanteste ist der Weg dahin!
            1. Hellihello Detlef,

              seit wann heißt Du Max?

              Gruß,

              frankx