Reiner: Frameset nachladen

Ich fand hier folgene Tipps, um ein Nachladen des Framesets zu erzwingen, falls jemand direkt auf eine meiner Pages zugreift:

  1. In die betreffende Page soll ich folgenden Code schreiben:
    <SCRIPT language="JavaScript">
    <!--
     function checkFrameset() {
      if(!parent.xyzVerweisframe)
       location.href="http://www.xy.de/unterverzeichnisXY/index.htm?" + location.pathname;
     }
    //-->
    </SCRIPT>
    </head>
    <body onLoad='checkFrameset()'>

  2. in die index-page soll ich schreiben:
    <SCRIPT language="JavaScript">
    <!--
     function checkFramecall() {
      var Adressanhang=location.search;
      if(Adressanhang)
      frames.xyzHauptframe.location.href=Adressanhang.substring(1,Adressanhang.length);
     }
    //-->
    </SCRIPT>
    </head>

<frameset cols="60,*" onLoad="checkFramecall()">
  <frame name="xyzVerweisframe" src="links.htm">
  <frame name="xyzHauptframe" src="start.htm">

Nun habe ich mir eine meiner Pages vorgenommen und folgendes reingeschrieben:
<SCRIPT language="JavaScript">
<!--
 function checkFrameset() {
  if(!parent.topFrame)
   location.href="http://www.infomorelos.com/index.htm?http://www.infomorelos.com/start.html";
 }
//-->
</SCRIPT>

start.html ist die Seite, die das Frameset nachladen soll, falls direkt auf sie zugegriffen wird.
In die index.htm habe ich gar nichts reingeschrieben, trotzdem funktioniert das Nachladen einwandfrei. Warum ist ds so? Nur weil ich IE6 verwende oder weil die start.html-page Teil meines in index.html definierten framesets ist. Oder warum kann ich mir die Erweiterung der index.htm sparen?

Irgendwo muss da noch was laueren, weshalb ich gleich mal frage ob:
location.href="http://www.infomorelos.com/index.htm?http://www.infomorelos.com/start.html"; richtig ist, oder ob es eher sowas wie location.href="http://www.infomorelos.com/index.htm?" + location.pathname="http://www.infomorelos.com/start.html"; sein sollte.

Kann mich da jemand aufklären?

  1. Hi,

    <frameset cols="60,*" onLoad="checkFramecall()">
      <frame name="xyzVerweisframe" src="links.htm">
      <frame name="xyzHauptframe" src="start.htm">

    start.htm ist also der Defaultwert für diesen Frame.

    start.html ist die Seite, die das Frameset nachladen
    soll, falls direkt auf sie zugegriffen wird.

    Genau. Und das ist das Besondere an Deinem Szenario.

    In die index.htm habe ich gar nichts
    reingeschrieben, trotzdem funktioniert das Nachladen
    einwandfrei. Warum ist ds so?

    Weil Du gar nicht das tust, worum es im allgemeinen
    Fall eigentlich geht.

    Ein Frameset verwendet man ja nicht, um dort genau ein
    Dokument hineinzuladen, sondern, um dort verschiedene
    Dokumente zu verschiedenen Zeitpunkten anzuzeigen.

    Wenn Du in diesem Falle das Frameset nachlädst, dann
    muß dieses Frameset irgendwie herausfinden, welche
    der vielen möglichen Dateien denn im xyzHauptframe
    anzuzeigen wäre - dafür ist die entsprechende Logik
    erforderlich, welche diese Informatione aus dem
    Query-String extrahiert und den Frameset dann dynamisch
    neu schreibt.

    In Deinem Falle soll aber immer nur eine konstante
    Datei (links.htm bzw. start.htm) angezeigt werden -
    da reicht natürlich ein statisches Frameset ohne
    Intelligenz aus.

    Oder warum kann ich mir die Erweiterung der
    index.htm sparen?

    Wenn mehr als eine Datei innerhalb eines Deiner Frames
    geladen sein kann, brauchst Du die Erweiterung.
    (Und wenn nicht, wieso verwendest Du überhaupt Frames?)

    Viele Grüße
          Michael