John Allenbacher: 3 Frames

Hallo,

ich habe auf einer Seite ein Script verwendet um 3 Frames gleichzeitig zu wechseln.

<script language="JavaScript">
  <!--
   2* function DreiFrames(URL2,F2,URL3,F3,URL4,F4)
   {
    parent.frames[F2].location.href=URL2;
    parent.frames[F3].location.href=URL3;
    parent.frames[F4].location.href=URL4;
   }
  //-->
  </script>

<a href="javascript:DreiFrames('../html/uns/home_uns.html',2,'../html/uns/main_bild_uns.html',3,'../html/uns/main_uns.html',4)" onmouseover="return CSIShow(/*CMP*/'button7',1)"

Allerdings soll auf die Seite ein BackButton.
Ich bekomme nur einen Frame dazu das history.back Script
zu nutzen. Die anderen beiden bleiben erhalten.
Wenn ich den Wert (-3) eingebe springt er zu ersten Frame und geht da eins zurück.

HILFEEEEEEEEEEEE

Danke

  1. Hallo John

    ich habe auf einer Seite ein Script verwendet um 3 Frames gleichzeitig zu wechseln.

    <...>

    Ich bekomme nur einen Frame dazu das history.back Script
    zu nutzen. Die anderen beiden bleiben erhalten.

    Dieses Problem wirst du mit Frames immer haben.
    Jedes "parent.frames[].location.href=url" trägt sich in die History des Browsers ein, und der Back-Button des Browsers (oder ein eigener) kann nun mal nur diese Liste zurückgehen.
    Wenn du das Problem umgehen willst musst du schon ein bisschen tiefer in die Trickkiste greifen.
    Du könntest es so lösen, dass der Link:

    "<a href="javascript:DreiFrames('../html/uns ...."

    ein ganz normaler Link ist: <a href="../html/uns/home_uns.html">
    Im onLoad von "home_uns.html" musst du nun die beiden anderen Frames nachladen. Und zwar so das sie nicht in der History erscheinen.
    parent.frames[0].location.replace("x.html");
    parent.frames[1].location.replace(y.html");

    Diese Vorgehensweise hat ausserdem den Vorteil, dass Surfer ohne javascript wenigstens ein bisschen was zu sehen bekommen und nicht ganz vor verschlossenen Türen stehen.

    Alles klar?

    Gruß von Maxx

    1. Hallo nochmal.

      Du könntest es so lösen, dass der Link:

      "<a href="javascript:DreiFrames('../html/uns ...."
      ein ganz normaler Link ist: <a href="../html/uns/home_uns.html">
      Im onLoad von "home_uns.html" musst du nun die beiden anderen Frames nachladen. Und zwar so das sie nicht in der History erscheinen.
      parent.frames[0].location.replace("x.html");
      parent.frames[1].location.replace(y.html");

      Ich habe das mit dem onload nicht verstanden. muß ich etwas in den head eintragen um ein onload zustarten.
      und wie geb ich die zielframes an. ich habe insgeasmt 5 möchte die drei letzten ändern.

      Im voraus Danke

      John

      1. Hi John

        Ich habe das mit dem onload nicht verstanden. muß ich etwas in den head eintragen um ein onload zustarten.

        nö, in den <body> so: <body onLoad="framewechsel(3,'blah.htm,4,'foo.htm')">

        und wie geb ich die zielframes an.

        Die Frames werden so wie sie im Frameset definiert werden, von 0 beginnend, durchnummeriert. Alternativ kannst du auch die Namen der Frames verwenden.

        ich habe insgeasmt 5 möchte die drei letzten ändern.

        also müssten es die frames [2], [3] und [4] sein
        Einen hast du ja bereits mit dem Link geändert, bleiben also noch 2 übrig.

        funktion framewechsel(f1,url1,f2,url2) {
          parent.frames[f1].location.replace(url1);
          parent.frames[f2].location.replace(url2);
          }

        hth

        Maxx