Flo: Von einer NoFrames-Seite per Links auf versch. Seiten in Frame-Seite

Hallo!

Ich habe in meinem Projekt eine Startseite ohne Frames. Darauf möchte ich jetzt Links zu den wichtigsten Seiten meines Projekts anbieten.
Wenn der Nutzer darauf klickt, soll das Frameset geladen werden und gleich auch die Seite zu dem gewünschten Thema - also nicht einfach Link auf das Frameset, was dann mit einer Standardseite angezeigt wird, sondern Link auf das Frameset mit spezifischem Inhalt, je nach gewähltem Link.

Danke für eure Hilfe!

Flo

  1. Hallo Flo,

    Ich habe in meinem Projekt eine Startseite ohne Frames.
    Darauf möchte ich jetzt Links zu den wichtigsten Seiten meines Projekts anbieten.

    da gibt es eine ganze Reihe von Ansätzen.

    Ein recht uneleganter wäre es, soviel Framesets wie Links einzurichten.
    Der Frameset lädt ja seinen Inhalt.

    Für eine einfache Parameterübergabe fehlt Dir etwas was stehenbleibt.

    Eine Erweiterung dieses Gedankens findest Du in:
       Hatto von Hatzfeld  Javascript-Wertübergabe zwischen verschiedenen    HTML-Dokumentenhttp://www.teamone.de/selfaktuell/wertueb.htm
    Da kannst Du sowas wie eine Parameter-Bereitstellung über den
    'Fensterrrahmen' realisieren.

    Klaus

  2. Mit JavaScript geht das, indem man die Frameset-Datei mit dem Namen der Seite als Parameter aufruft (z.B. index.htm?seite.htm). Dieser Name muß dann in der Frameset-Datei in das dynamisch generierte Frameset eingefügt werden, woraufhin diese Seite dann im richtigen Frame geladen wird. Hier (m)ein Lösungsvorschlag, der eigentlich dazu gedacht war, ein fehlendes Frameset "nachzuladen":

    Seite im richtigen Frameset nachladen

    Voraussetzung: JavaScript muß aktiviert sein (wenn nicht, dann wird
    die Seite einfach ohne Frameset geladen).

    Wichtig: Unbedingt eigene, eindeutige Frame-Namen verwenden, da sonst
    die Identifizierung des eigenen Framesets durch das Script nicht mehr
    eindeutig wäre!

    1.) Frameset (z.B. index.htm):

    <head>
        ...
        <script language="JavaScript">
        <!--
          // Aus fremden Frames befreien!
          if(top.frames.length>0) top.location.href=location.href;
        // -->
        </script>
      </head>

    <script language="JavaScript">
      <!--
        var seite=location.search.substring(1,location.search.length);
        if(seite.length==0) seite="start.htm";

    document.write('<frameset cols="*,150" border=0 frameborder=0
    framespacing=0>');
        document.write('  <frame src="' + seite + '" name="HauptFenster">');
        document.write('  <frame src="menu.htm" name="MenueFenster">');
        document.write('</frameset>');
       // -->
       </script>

    <noscript>
        <frameset cols="*,150" border=0 frameborder=0 framespacing=0>
          <frame src="start.htm" name="HauptFenster">
          <frame src="menu.htm" name="MenueFenster">
        </frameset>
      </noscript>

    2.) Einzelne Seiten, die im Frame "HauptFenster" geladen werden:

    <head>
        ...
        <script language="JavaScript">
        <!--
          function checkFrames()
          {
            if(top.frames.length==0 top.frames[0].name!="HauptFenster")

    top.location.href="index.htm?"+location.href.substring(location.href.lastIndexOf("/")+1,location.href.length);
          }
        // -->
        </script>
      </head>

    <body onLoad="checkFrames()" ...>
        ...

    Der Index top.frames[x] muß entsprechend dem Aufbau des Framesets
    angepaßt werden. Der Wert 0 bezieht sich auf den ersten definierten
    Frame.

    Es ist wichtig, die Funktion checkFrames() mittels onLoad aufzurufen,
    damit das Laden der Seite nicht vorzeitig abgebrochen wird, da es sonst
    passieren kann, daß die Seite nur unvollständig im Frameset nachgeladen
    wird (Browser-Cache).

    Bei Seiten, die standardmäßig im Hauptframe geladen werden (hier:
    start.htm) braucht hinter "index.htm" kein weiterer Parameter angegeben
    zu werden. Hier genügt also: top.location.href="index.htm";

    Gruß,
    Stefan