Ulf Brinkmann: index.htm

Wir haben die verschiedenen Startseiten von unserem Server www.afj-hamm.de in diversen Internet-Suchmaschinen eingetragen. Leider oder auch glücklicherweise sieht es nun wohl so aus, das die Robots auch einzelne frames in die suchmaschinen eintragen, die ohne Zusammenhang dastehen. Gibt es eine Möglichkeit, das man einen Browser "zwingt", eine bestimmte Seite in einem Frameset darzustellen?
danke schonmal, ulf

  1. Hallo erstmal !

    Wir haben die verschiedenen Startseiten von unserem Server www.afj-hamm.de in diversen Internet-Suchmaschinen eingetragen. Leider oder auch glücklicherweise sieht es nun wohl so aus, das die Robots auch einzelne frames in die suchmaschinen eintragen, die ohne Zusammenhang dastehen. Gibt es eine Möglichkeit, das man einen Browser "zwingt", eine bestimmte Seite in einem Frameset darzustellen?

    Über die Abfrage des Frames-Objektes kann man feststellen, ob die Seite in einem Frameset aufgerufen wurde, oder eigenständig. Mehr zu diesem Thema bei den Beiträgen zu SELFHTML aktuell:

    http://www.teamone.de/selfaktuell/jsframes.htm

    Vielleicht hilft‚s !

    CIAO
    Holger

  2. Gibt es eine Möglichkeit, das man einen >>Browser "zwingt", eine bestimmte Seite in einem >>Frameset darzustellen?

    Ja die gibt's

    Mit einem kleinen Javascript, kann man den User per Hinweisbox auf den gewünschten Frame umleiten.
    Man muß das Script im Head einfügen.

    if (window.name != 'inhalt') {
    TEST=confirm("Diese Seite ist Bestandteil eines Framesets." + "n\Klicken sie auf OK, um auf diese Seite zu gelangen.";

    if (TEST==true) {document.location.href='index.htm'};
    }

    Dieser Codeschnipsel muß natürlich noch angepaßt werden, d.h. Dateinamen ändern.

    Gruß Emrah

    1. Hallo,

      diese Lösung ist aber nicht gerade empfehlenswert, weil dann auch jedes mal wenn die Seite normal geladen wird diese Box angezeigt wird.
      ‚nen bisschen unschön  ;-)
      Die neuste hier gepostete Lösung ist wohl die beste.

      Gruß
      Sebastian

  3. Wir haben die verschiedenen Startseiten von unserem Server www.afj-hamm.de in diversen Internet-Suchmaschinen eingetragen. Leider oder auch glücklicherweise sieht es nun wohl so aus, das die Robots auch einzelne frames in die suchmaschinen eintragen, die ohne Zusammenhang dastehen. Gibt es eine Möglichkeit, das man einen Browser "zwingt", eine bestimmte Seite in einem Frameset darzustellen?
    danke schonmal, ulf

    Auf meinen privaten Seiten habe ich das mit JavaScript gelöst.
    Lad' z.B. mal diese Seite hier: http://www.ndh.net/home/bion/fliegen.htm

    Das Script (im HEAD)

    <script language="JavaScript">
      <!--
        if(top.frames.length==0 top.frames[2].name!="HauptFensterStefanBion")
          top.location.href="index.htm?"+location.href.substring(location.href.lastIndexOf("/")+1,location.href.length);
      // -->
      </script>

    merkt, ob die Seite ohne oder in einem falschen Frameset geladen wurde und ruft in diesen Fällen die Frameset-Datei index.htm mit dem Namen der Seite als Parameter auf.

    In der Index-Datei wird das Frameset dynamisch generiert und der übergebene Name der Seite als Startseite für das Hauptframe eingesetzt:

    a) im HEAD:

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

    b) hinter HEAD:

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

    document.write('<frameset cols="16,*,150" border=0 frameborder=0 framespacing=0>');
      document.write('  <frame src="border.htm" scrolling=no>');
      document.write('  <frameset rows="16,*,16" border=0 frameborder=0 framespacing=0>');
      document.write('    <frame src="border.htm" scrolling=no>');
      document.write('    <frame src="' + seite + '" name="HauptFensterStefanBion">');
      document.write('    <frame src="border.htm" scrolling=no>');
      document.write('  </frameset>');
      document.write('  <frame src="menu.htm" name="MenueFensterStefanBion">');
      document.write('</frameset>');
    // -->
    </script>

    <noscript>
      <frameset cols="16,*,150" border=0 frameborder=0 framespacing=0>
        <frame src="border.htm" scrolling=no>
        <frameset rows="16,*,16" border=0 frameborder=0 framespacing=0>
          <frame src="border.htm" scrolling=no>
          <frame src="start.htm" name="HauptFensterStefanBion">
          <frame src="border.htm" scrolling=no>
        </frameset>
        <frame src="menu.htm" name="MenueFensterStefanBion">
      </frameset>
    </noscript>

    Gruß,
    Stefan

    P.S. Bug-Reports erwünscht. Bei NN 4.07 (nicht bei 4.5) z.B. habe ich manchmal das Phänomen, daß durch das Abbrechen des ersten Ladens der aufgerufenen Seite die Seite im Frameset nur unvollständig nachgeladen wird. Erst ein manueller Reload lädt sie dann komplett. Aber wie gesagt, nur bei NN 4.07. Sehr komisch...

    1. Hallo Stefan!

      P.S. Bug-Reports erwünscht. Bei NN 4.07 (nicht bei 4.5) z.B. habe ich manchmal das Phänomen, daß durch das Abbrechen des ersten Ladens der aufgerufenen Seite die Seite im Frameset nur unvollständig nachgeladen wird. Erst ein manueller Reload lädt sie dann komplett. Aber wie gesagt, nur bei NN 4.07. Sehr komisch...

      Ich hatte ein aehnliches Problem mit dem NN 4.5. Der Grund war offenbar, dass die abgebrochene Seite aus dem Browser-Cache geladen wurde. Ich rufe jetzt eine Funktion mit ONLOAD im BODY-Tag auf. Dadurch wird die Seite zuerst vollstaendig geladen und danach erst das Frameset aufgebaut. Anzusehen ist das unter http://www.netcamera.de/wcn/live.htm.

      Viele Gruesse
      Harald

      PS: Fuer etwaige Fehlermeldungen oder Verbesserungsvorschlaege waere ich ebenfalls dankbar.

      1. Hallo Harald,

        danke für den Tip mit onLoad - werde ich gleich mal bei mir ausprobieren! Da war ich bis jetzt noch gar nicht drauf gekommen, weil ich immer annahm, daß onLoad "(eintritt), wenn eine HTML-Datei geladen wird" (SelfHTML) - also sobald die Datei angefangen wird zu laden, womit ja dann nichts gewonnen wäre. Aber wenn ich Deine Seite aufrufe, wird mit dem Nachladen des Framesets tatsächlich solange gewartet, bis die Seite vollständig (incl. Grafiken) geladen ist!

        Ist es grundsätzlich so, daß onLoad grundsätzlich solange wartet, bis die Seite vollständig geladen ist?! Dann müßte es doch heißen "onLoaded" oder so...

        PS: Fuer etwaige Fehlermeldungen oder Verbesserungsvorschlaege waere ich ebenfalls dankbar.

        Im MSIE 3.02 gibt's 'nen JS-Error:

        Microsoft JScript runtime error

        [Zeile: 21] Objekt unterstützt diese Eigenschaft oder Methode nicht

        Ok, den benutzt sowieso keiner mehr. Außer ich - zum Testen...

        Gruß,
        Stefan

        1. Hallo Harald,

          danke für den Tip mit onLoad - werde ich gleich mal bei mir ausprobieren! Da war ich bis jetzt noch gar nicht drauf gekommen, weil ich immer annahm, daß onLoad "(eintritt), wenn eine HTML-Datei geladen wird" (SelfHTML) - also sobald die Datei angefangen wird zu laden, womit ja dann nichts gewonnen wäre. Aber wenn ich Deine Seite aufrufe, wird mit dem Nachladen des Framesets tatsächlich solange gewartet, bis die Seite vollständig (incl. Grafiken) geladen ist!

          Ist es grundsätzlich so, daß onLoad grundsätzlich solange wartet, bis die Seite vollständig geladen ist?! Dann müßte es doch heißen "onLoaded" oder so...

          Hallo Stefan,
          zu dem Thema "onLoad" / "onLoaded" hab ich nach meinem Beitrag unter
          http://www.teamone.de/selfaktuell/self_forum/16206.html nochmal ein bischen recherchiert.Ich konnte keine Aussage finden, in der etwas ueber den Zeitpunkt der Ausfuehrung von "onLoad" ausgesagt wird. Du bist aber auf der sicheren Seite, wenn Du den Trick mit dem zweiten Body machst, da dieser ein Body ohne Content ist und wenn das geladen wird die anderen Objekte schon angelegt sein muessen, da der erste Body ja den Content enthaelt.

          Michael N.

          1. Moin Michael,

            ich weiß nicht, die Sache mit dem zweiten <body> erscheint mir irgendwie nicht so ganz sauber! Würde es nicht genauso reichen, vor dem ersten (bzw. einzigen) </body> eine weitere JavaScript-Section eizufügen, also:

            <head>
            ...
            </head>
            <body>
            ...
            <script language="JavaScript">
            [Initialisierung von irgendwelchen Variablen, die in den anderen Scripts dann abgefragt werden]
            </script>
            </body>

            IMHO müsste das eigentlich genau das gleiche machen, wie das zweite <body onLoad="[Initialisierung]"></body>!

            Gruß
            Dirk

            1. Moin Michael,

              ich weiß nicht, die Sache mit dem zweiten <body> erscheint mir irgendwie nicht so ganz sauber! Würde es nicht genauso reichen, vor dem ersten (bzw. einzigen) </body> eine weitere JavaScript-Section eizufügen, also:

              <head>
              ...
              </head>
              <body>
              ...
              <script language="JavaScript">
              [Initialisierung von irgendwelchen Variablen, die in den anderen Scripts dann abgefragt werden]
              </script>
              </body>

              IMHO müsste das eigentlich genau das gleiche machen, wie das zweite <body onLoad="[Initialisierung]"></body>!

              Gruß
              Dirk

              Hallo Dirk,
              Technisch gesehen schon, aber ich habe bemerkt, dass Deine Version mir hin und wieder mal Aerger machte (fehlende Zeichen, indifferenteres Verhalten bei nicht vollstaendiger Uebertragung der Seite etc.), waehrend der doppelte BODY besser lief. Ehrlicherweise muss ich auch zugeben, dass meine Seiten aufgrund der dynamischen Generierung mittels NET.DATA auch hin und wieder schon 0,25 MB und mehr reinen HTML- und JavaScript-Text enthalten und da werden dann schon Kleinigkeiten in Bereich Zuverlaessigkeit fuer den User hochrelevant.

              Michael N.

              PS.: Falls sich jemand fuer das Multiplattform-Datenbank-Abfrage-Tool NET.DATA interessiert hier der betreffende Link zu den Seiten von Big-Blue: http://www.software.ibm.com/data/net.data/

        2. Hallo Stefan!

          Ist es grundsätzlich so, daß onLoad grundsätzlich solange wartet, bis die Seite vollständig geladen ist?! Dann müßte es doch heißen "onLoaded" oder so...

          Tja ich bin eher JavaScript-Bastler als - Programmierer ;-) Ich habe nur gesehen, daß so im IE 4.01 und im NN 4.5 die komplette Seite inkl. aller Grafiken geladen wird und dann erst die Umleitung erfolgt. Solange es funktioniert soll es mir recht sein.

          Im MSIE 3.02 gibt's 'nen JS-Error:

          Microsoft JScript runtime error

          [Zeile: 21] Objekt unterstützt diese Eigenschaft oder Methode nicht

          Ok, den benutzt sowieso keiner mehr. Außer ich - zum Testen...

          Danke für den Hinweis. Anscheinend liegt der Fehler bei SPLIT in der Zeile:

          framesrc = window.location.href.split("#");

          Laut SelftHTML <../../tecl.htm#a23>sollte es aber mit der 3er-Version funktionieren. Das dortige Beispiel bringt auch eine Fehlermeldung. Hast Du eine Ahnung wieso? Ist es vielleicht ein Bug in der Doku?

          Viele Gruesse
          Harald