Alex: seite in über-übergeordnetem frameset laden

Hallo Forum!

im selfhtml hab ich die praktische lösung gefunden, wie man zwei frames gleichzeitig laden kann. aber nun möchte ich nicht die 1000 und 1. Frage stellen wie dies funktioniert(ich weiß, die ist hier im forum nicht besonders beliebt), sondern wie ich ideses script erweitern kann, damit ich frames tauschen kann, die nicht im parent. sondern eine Ebene darüber liegt.

also:

Datei home.htm:
<frameset>
  <frame src="oben.htm">
  <frame name="nav" src="nav.htm">
  <frame name="mitte src="main.htm">
  <frame src="unten.htm">
</frameset>
(unnötiges hab ich hier weggelassen)

Datei main.htm:

<frameset>
  <frame name="leftFrame" src="links.htm">
  <frame name="mainFrame" src="rechts.htm">
</frameset>

so, und jetzt möchte ich aus links.htm mit einem Link Frames aus _home.htm_ tauschen!

das script aus selfhtml (
function ZweiFrames(URI1,F1,URI2,F2) {
  Frame1=eval("parent."+F1);
  Frame2=eval("parent."+F2);
  Frame1.location.href = URI1;
  Frame2.location.href = URI2;
}
ist super, aber wie leite ich das ganze noch weiter nach 'oben'?

Frame1=eval("parent.parent."+F1); ...so wohl kaum?

ist sicher nicht schwer zu beantworten, aber ich find einfach nicht die richtige lösung in den (un-)tiefen des web.

lg
Alex

  1. also i bin ma ja ned sicher ob i dei frage so ganz richtig verstanden hab ... ausserdem kommts ma komisch vor frames so zu verschachteln, aber ok.

    möglicher Lösungsweg: statt parent top verwenden ... dann solltest du immer auf die höchste ebene, also auf die home.htm kommen. von da kannst dich dann wieder mit den bekannten pfad weiterarbeiten.
    nicht getestet, keine garantie ... just try.

    lg
    StD

  2. Moin Moin !

    http://aktuell.de.selfhtml.org/tippstricks/javascript/fensterzugriff/index.htm

    Und Du willst eval() nicht wirklich benutzen.

    Alexander

    --
    Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
    Für eine bessere Übersichtsdarstellung des Forums: http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2
    1. Moin Moin !

      Moin!

      Danke für deinen tipp! die seite hatte ich gesucht.

      href="javascript:top.nav.location.href='../../../nav/3/3_0.htm'; top.mitte.location.href='../../3/brunch/main.htm';"
      funktioniert.

      aber was hast du gemeint, mit "eval() möchtest du nicht benutzen? was ist falsch daran, oder besser, was soll ich stattdessen verwenden? an einer anderen stelle funktionierts problemlos so..

      lg
      A

      1. Moin Moin !

        aber was hast du gemeint, mit "eval() möchtest du nicht benutzen? was ist falsch daran, oder besser, was soll ich stattdessen verwenden? an einer anderen stelle funktionierts problemlos so..

        Eval ist in den meisten Fällen absolut unnötig und immer ein Performance-Killer.

        In Deinem Fall:

        Alt:

        function ZweiFrames(URI1,F1,URI2,F2) {
         Frame1=eval("parent."+F1);
         Frame2=eval("parent."+F2);
         Frame1.location.href = URI1;
         Frame2.location.href = URI2;
        }

        Neu:

        function ZweiFrames(URI1,F1,URI2,F2)
        {
         parent.frames[F1].location.href=URI1;
         parent.frames[F2].location.href=URI2;
        }

        Nebenbei hat der neue Code den Vorteil, auch mit illegalen Frame-Namen klarzukommen. Natürlich darf man ein Frame nicht "close()" nennen. Es geht aber trotzdem oft. Dein eval() schließt dann stumpf und dumm den parent (denn Du machst eval("parent.close()")), während die saubere Lösung über das assoziative Array frames[] auch dann noch funktioniert (parent.frames["close()"].location.href=URI1).

        Außerdem: http://aktuell.de.selfhtml.org/artikel/javascript/oomodell/index.htm -- wenn ich mich recht erinnere, fällt CK in dem Artikel kein einziger Grund mehr ein, eval() zu benutzen. Es geht alles ohne eval().

        Alexander

        --
        Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
        Für eine bessere Übersichtsdarstellung des Forums: http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=103&pos=2