Stefan Bion: JS: Frame-Spielereien

Hallo,

ich habe einige Testseiten erstellt, um meine Seiten aus fremden Frames zu befreien bzw. ein fehlendes Frameset "nachzuladen", wenn sie Seite (z.B. über eine Suchmaschine) einzeln aufgerufen wird. Egal, wie irgend eine meiner Seiten referenziert wird, das Ergebnis soll immer sein, daß die betreffende Seite innerhalb meines eigenen Framesets dargestellt wird (also weder innerhalb eines fremden Framesets noch "nackt" ohne Frameset).

Hier einige mögliche Szenarien mit Links zum Ausprobieren:

1.) http://www.ndh.net/home/bion/test/index.htm - Das Original-Frameset (links Blau, rechts Rot)
2.) http://www.ndh.net/home/bion/test/gruen.htm - Eine Grüne Seite einzeln
3.) http://www.ndh.net/home/bion/test/index.htm?gruen.htm - Das Original-Frameset mit der Grünen Seite als "Wunschseite"
4.) http://www.ndh.net/home/bion/test/fremd-index.htm - Ein fremdes Frameset lädt mein Original-Frameset
5.) http://www.ndh.net/home/bion/test/fremd-gruen.htm - Ein fremdes Frameset lädt meine Grüne Seite
6.) http://www.ndh.net/home/bion/test/fremd-index_gruen.htm - Ein fremdes Frameset lädt mein Original-Frameset mit der Grünen Seite als "Wunschseite"

Es müßte in jedem Fall mein Original-Frameset mit rechts dem schmalen Menü-Frame (Rote Seite) und links dem großen Hauptfenster (Grüne bzw. bzw. Blaue Seite) dargestellt werden.

Hierbei gibt es aber folgende Probleme mit den unterschiedlichen Browsern:

  • Fall Nr. 4.) funktioniert nicht mit MSIE 3.02 (Version 4 nicht getestet - habbich nicht). -> siehe auch mein Posting "JS: Probleme mit top.frames.length bei MSIE" vom 14.3.99, 23:29 Uhr (link:11177.html).

  • Bei Fall Nr. 6.) scheint Netscape 4.5 überfordert zu sein: Bei mir stürzt er komplett ab ("Anwendungsfehler... ungültige Seite im Modul KERNER32.DLL... bla bla bla).

Gut, Fall 6.) wird in der Realität selten auftreten, aber daß das Befreien aus fremden Framesets mit dem MSIE nicht funktioniert...... seltsam.

Also, wer von Euch weiß Rat und kann mir helfen?

Gruß,
Stefan

  1. Hallo,

    ich denke, das mit den Netscape-Abstürzen liegt wohl an dem "onLoad=..." innerhalb der Frameset-Definition. Nachdem ich nun statt dessen das gesamte Frameset mit document.write() dynamisch erstelle und so auf onLoad verzichten kann, gibt es auch keine Abstürze mehr. Ist schon komisch... hat vielleicht sonst noch jemand von Euch schonmal solche Probleme mit Netscape gehabt?

    Und das JS-Problem mit MSIE (Frame-Killer-Script) lag wohl an dem "top.location.href=location". Mit "top.location.href=location.href" funktioniert's jetzt. Mann, sind die Browser pingelig!

    Die funktionierenden Testdateien habe ich zusätzlich nochmal in ein weiteres Unterverzeichnis "test2" kopiert, zum Ausprobieren:

    1.) http://www.ndh.net/home/bion/test2/index.htm - Das Original-Frameset (links Blau, rechts Rot)
    2.) http://www.ndh.net/home/bion/test2/gruen.htm - Eine Grüne Seite einzeln
    3.) http://www.ndh.net/home/bion/test2/index.htm?gruen.htm - Das Original-Frameset mit der Grünen Seite als "Wunschseite"
    4.) http://www.ndh.net/home/bion/test2/fremd-index.htm - Ein fremdes Frameset lädt mein Original-Frameset
    5.) http://www.ndh.net/home/bion/test2/fremd-gruen.htm - Ein fremdes Frameset lädt meine Grüne Seite
    6.) http://www.ndh.net/home/bion/test2/fremd-index_gruen.htm - Ein fremdes Frameset lädt mein Original-Frameset mit der Grünen Seite als "Wunschseite"

    Es wäre nett, wenn Ihr mal testen könntet, ob das bei Euch auch funktioniert. Es müßte in jedem der Fälle das Original-Frameset mit rechts dem schmalen Menü-Frame (Rote Seite) und links dem großen Hauptfenster (Grüne bzw. bzw. Blaue Seite) dargestellt werden.

    Gruß,
    Stefan

    1. Moin Stefan,

      ich habe mir die einzelnen Seiten mal angeguckt, lästig finde ich, daß es (zumindest mit IE4) auch durch mehrmaliges Klicken auf den Zurück-Button nicht möglich ist, Dein Frameset wieder zu verlassen!

      2.) http://www.ndh.net/home/bion/test2/gruen.htm - Eine Grüne Seite einzeln
      5.) http://www.ndh.net/home/bion/test2/fremd-gruen.htm - Ein fremdes Frameset lädt meine Grüne Seite

      Es müßte in jedem der Fälle das Original-Frameset mit rechts dem schmalen Menü-Frame (Rote Seite) und links dem großen Hauptfenster (Grüne bzw. bzw. Blaue Seite) dargestellt werden.

      Ein kleiner Widerspruch in Deiner Nachricht: grüne Seite einzeln oder im Frameset??? Falls sie im Frameset dargestellt werden soll ist alles OK!

      Gruß
      Dirk

      PS: laut SELFHTML und meinen eigenen Erfahrungen kennt der IE location.search nicht; wie hast Du es geschafft, daß IE4 den Text hinter dem ? in der URL auswertet (oder hat Stefan M. hier einen Fehler gemacht und ich bei meinen Versuchen ebenso) ?

      1. Hallo Dirk,

        PS: laut SELFHTML und meinen eigenen Erfahrungen kennt der IE location.search nicht; wie hast Du es geschafft, daß IE4 den Text hinter dem ? in der URL auswertet (oder hat Stefan M. hier einen Fehler gemacht und ich bei meinen Versuchen ebenso) ?

        Kennen tut er den Fragezeichen-Operator schon. Aber nur in einer HTTP-Umgebung, also nicht, wenn man Dateien lokal mit "Datei/oeffnen" auf den Bildschirm gebracht hat.

        Wenn Du folgende Datei hast:
        <HTML><HEAD>
        <SCRIPT language="JavaScript">
        function show()
        { alert(location.search); }
        </SCRIPT></HEAD>
        <BODY onLoad="show()">
        </BODY></HTML>

        ...und die bei installiertem Web-Server z.B. ueber http://127.0.0.1/datei.htm aufrufst, gibt auch der MSIE brav "?hallo" aus.

        Das ist in SELFHTML bei location.search nicht beschrieben, stimmt!

        viele Gruesse
          Stefan Muenz

        viele Gruesse
          Stefan Muenz

        1. Kennen tut er den Fragezeichen-Operator schon. Aber nur in einer HTTP-Umgebung, also nicht, wenn man Dateien lokal mit "Datei/oeffnen" auf den Bildschirm gebracht hat.

          Genau, dashalb konnte ich das beim MSIE auch nur "online" testen.

          Gruß,
          Stefan

      2. Tach Dirk,

        ich habe mir die einzelnen Seiten mal angeguckt, lästig finde ich, daß es (zumindest mit IE4) auch durch mehrmaliges Klicken auf den Zurück-Button nicht möglich ist, Dein Frameset wieder zu verlassen!

        Ist klar, wenn das Script aktiv wird, um das Frameset nachzuladen, dann landest Du mit "Zurück" natürlich wieder eben dieser Seite, bei der Seite mit dem Script, das das Frameset nachlädt, usw. ... Du könntest über das History-Menü (Netscape: "Gehe") die *vor*letzte Seite aufrufen.

        Aber ich habe es mir beim "Surfen" ohnehin zur Gewohnheit gemacht, alle Seiten in einem neuen Fenster zu öffnen. Ebenso halte ich es bei externen Links auf meinen Seiten: Wird alles mir target="_blank" aufgerufen.

        2.) http://www.ndh.net/home/bion/test2/gruen.htm - Eine Grüne Seite einzeln
        5.) http://www.ndh.net/home/bion/test2/fremd-gruen.htm - Ein fremdes Frameset lädt meine Grüne Seite
        Es müßte in jedem der Fälle das Original-Frameset mit rechts dem schmalen Menü-Frame (Rote Seite) und links dem großen Hauptfenster (Grüne bzw. bzw. Blaue Seite) dargestellt werden.

        Ein kleiner Widerspruch in Deiner Nachricht: grüne Seite einzeln oder im Frameset??? Falls sie im Frameset dargestellt werden soll ist alles OK!

        Bei 2.) wird versucht, die Grüne Seite einzeln zu laden, aber das Script erkennt das und lädt das Frameset nach mit der Grünen Seite im Haupt-Frame. Genauso soll es funktionieren! :-)

        PS: laut SELFHTML und meinen eigenen Erfahrungen kennt der IE location.search nicht; wie hast Du es geschafft, daß IE4 den Text hinter dem ? in der URL auswertet (oder hat Stefan M. hier einen Fehler gemacht und ich bei meinen Versuchen ebenso) ?

        Siehe Antwort auf Stefan M.s Posting.

        Gruß,
        Stefan