Da Masta Ha: Wenn eine Unterseite geladen wird ohne Frameset => nachladen

Hi,

wenn man z.b. bei einer suchmaschine was sucht kommt man auf eine seite, die meistens unterseite von einem frameset ist.
wie kann man es skripttechnisch lösen, dass dies erkannt wird und das frameset außenrum nachgeladen wird?

MfG
Andy

  1. Hi Andy,

    ganz einfach: auf Frames verzichten.

    Sonst:

    schreibe in die index.html folgendes Skript (muss natürlich angepasst werden):
    function frami(){
      document.writeln('<frameset frameborder="0" border="0" framespacing="0" rows="100,*">');
      document.writeln('<frame name="oben" src="oben.htm" scrolling="no">');
      document.writeln('<frameset framespacing="0" border="0" frameborder="0" cols="200,*">');
      document.writeln('<frame name="menu" src="nav.htm" scrolling="auto" noresize>');
      document.writeln('<frame name="Hauptframe" src="'+st+'" scrolling="auto" noresize>');
      document.writeln('</frameset>');
      document.writeln('</frameset>');
    }

    und in jede datei Deines Framesets:

    if (parent.frames.length<=0){
      st=document.URL;
      if (navigator.appName=='Netscape')                      // ???
        st=st.substr(st.lastIndexOf("/")+1,st.length);        // ???
      else
        st=st.substr(st.lastIndexOf("\")+1,st.length);       // ???
      document.location.href="index.html"+"?"+st;             // ???
    }

    Ich habe das irgend wann mal verwendet, und da hatte es funktioniert ;-)

    Tom

    1. Hi Andy,Hi Tom

      meine Anregungen dazu:

      schreibe in die index.html folgendes Skript (muss natürlich angepasst werden):
      function frami(){
        document.writeln('<frameset frameborder="0" border="0" framespacing="0" rows="100,*">');
        document.writeln('<frame name="oben" src="oben.htm" scrolling="no">');
        document.writeln('<frameset framespacing="0" border="0" frameborder="0" cols="200,*">');
        document.writeln('<frame name="menu" src="nav.htm" scrolling="auto" noresize>');
        document.writeln('<frame name="Hauptframe" src="'+st+'" scrolling="auto" noresize>');
        document.writeln('</frameset>');
        document.writeln('</frameset>');
      }

      Dieses Script macht erstmal gar nichts, solange die Funktion "frami()" nicht aufgerufen wird.

      Außerdem müßte vor dem Aufruf der Funktion die Variable "st" definiert werden.

      Diese dient dazu, eine vom unteren Skript ermittelte URL zu übergeben.

      Von diesem wird die URL, die im Skript ermittelt wurde über die "search"-Eigenschaft des "location"-Objekts übergeben.

      Könnte im oberen Skript mit:
      var st=self.location.search;
      abgefragt werden, enthält dann aber noch das "?"(Fragezeichen).
      Das müßte man aber damit loskriegen:
      var st=self.location.search.substring(1);

      und in jede datei Deines Framesets:

      if (parent.frames.length<=0){
        st=document.URL;
        if (navigator.appName=='Netscape')                      // ???
          st=st.substr(st.lastIndexOf("/")+1,st.length);        // ???
        else
          st=st.substr(st.lastIndexOf("\")+1,st.length);       // ???
        document.location.href="index.html"+"?"+st;             // ???
      }

      gruß
      ptr