Sebastian Pfohl: verschachteltes Framset sprengen

Ich vermute mal die folgende Frage wurde schon tausendmal gestellt. Ich hab auch so einige Antworten im Forumsarciv gefunden, dummweise funktionieren die Links von dort zu den Besipielen nicht mehr.

Also was ich versuche zu machen ist folgendes: Ich habe ein Frameset mit verschachtelten Frames. Wenn nun auf eine Seite innerhalb der Site verlinkt wird (speziell von Suchmaschinen etc.) soll der komplette Frameset nachgeladen werden. Das funktioniert insoweit auch ganz gut, nur eben dummerweise nicht bei verschachtelen Frames, dort werden dann nur Teile nachgeladen.

Kann man sowas irgendwie umgehen ? Oder funktioniert sowas mit verschachtelten Frames nicht ?

Als Beispiel könnteman mal die Testseite unten in dem URL nehmen...
THX für alle antworten ...

  1. Ich vermute mal die folgende Frage wurde schon tausendmal gestellt. Ich hab auch so einige Antworten im Forumsarciv gefunden, dummweise funktionieren die Links von dort zu den Besipielen nicht mehr.

    Also was ich versuche zu machen ist folgendes: Ich habe ein Frameset mit verschachtelten Frames. Wenn nun auf eine Seite innerhalb der Site verlinkt wird (speziell von Suchmaschinen etc.) soll der komplette Frameset nachgeladen werden. Das funktioniert insoweit auch ganz gut, nur eben dummerweise nicht bei verschachtelen Frames, dort werden dann nur Teile nachgeladen.

    Kann man sowas irgendwie umgehen ? Oder funktioniert sowas mit verschachtelten Frames nicht ?

    Als Beispiel könnteman mal die Testseite unten in dem URL nehmen...
    THX für alle antworten ...

    Denke, das es so gehen müsste:

    <a target="_parent" href="seite_ohne_frames.html">Frameset Sprengen</a>

    Machen gut!

    MfG Thomas B

    1. Hmm das meinte ich eigentlich nicht. Ich meine als onLoad Event mit JavaScript. Sprich wenn sagen wir mal die Seite test.html geladen wird, diese aber Teil eines Framsets ist, soll selbiger nacgeladen werden, damit die Leute auch was zum navigieren haben. Das klappt ja bisher auch mit einem normalen Frameset nur halt nicht mit einem verschachtelten ...

      1. Hi Sebastian,

        Ich meine als onLoad Event mit JavaScript.
        Sprich wenn sagen wir mal die Seite test.html geladen wird,
        diese aber Teil eines Framsets ist, soll selbiger nacgeladen
        werden, damit die Leute auch was zum navigieren haben.
        Das klappt ja bisher auch mit einem normalen Frameset nur halt
        nicht mit einem verschachtelten ...

        Sieh das Problem doch einfach mal rekursiv.

        Du hast bereits einen Dokumentnamen verwendet, der nicht "index.html"
        heißt.
        Daraus schließe ich, daß Dir bewußt ist, das Dein Frameset von außen
        mitgeteilt bekommen muß, welche Seite es laden soll.
        Der JavaScript-Code von test.html muß also ein übergeordnetes Frameset,
        sagen wir mal "index.html", welches aber irgendwie erfahren muß, daß in
        seinem Arbeits-Frame "test.html" geladen werden soll. Das mußt Du ihm
        also mitteilen.

        Bisher ist das eine skalare Information. Du hast mehrere Möglichkeiten,
        sie darzustellen. Du könntest beispielsweise irgendwo eine JavaScript-
        Variable verwenden - wenn Du sicher wärest, daß diese in einem Frame
        liegt, welcher während der gesamten Nachlade-Aktion überlebt!
        Kannst Du das nicht, dann könntest Du diese Information über den Query-
        String des URL durchreichen.
        "test.html" würde also "index.html?framex=text.html" referenzieren, und
        in "index.html" würde selbst wiederum per JavaScript-Code der eigentliche
        Inhalt des Framesets dynamisch erzeugt werden.
        Mit 'framex' versuche ich, anzudeuten, daß das Frameset auch den Namen
        des Frames wissen möchte, weil dieser ja ggf. von JavaScript-Code oder
        einfachen Hyperlinks angesprochen werden soll. (Ich möchte den JavaScript-
        Code so formulieren, daß er in jedem einzelnen Deiner Dokumente einge-
        setzt werden kann und keinerlei Wissen über dieses Frameset hat - diese
        Eigenschaft werden wir nämlich gleich noch ausnutzen.)

        Damit ist das Problem aber im Prinzip bereits gelöst. Denn ein Frame
        bekommt innerhalb seines <frame>-Tags ein Dokument über einen URL zuge-
        wiesen. Dieser URL darf sehr wohl ebenfalls wieder einen Query-String
        enthalten!
        Wenn Du das Wissen darüber besitzt, den gesamten geschachtelten Frameset-
        Baum in einen einzigen URL zu codieren und diesen innerhalb einer jeden
        Frameset-Stufe wieder decodieren und zur Generierung der Framesets ver-
        wenden kannst, dann ist Dein Problem bei beliebiger Schachtelung der
        Framesets lösbar.

        Beweisen wir noch schnell, daß dies möglich ist:
        1. Ein Browser-Inhalt besteht aus endlich vielen geschachtelten Framesets.
        2. Jeder Frameset entspricht einer sequentiellen Anordnung von Frames.
           (Durch die Verwendung von Namen wird es minimal komplizierter, aber
           das blende ich erst mal aus - die sequentielle Anordnung der Framesets
           möge erst mal genügen.)
        Damit läßt sich der vollständige Browser-Zustand durch einen geklammerten
        Ausdruck endlicher Größe formulieren.

        Der Trick besteht nun darin,
        a) innerhalb eines jeden (!) BlLattes des Dokumentbaums diese Baumstruktur
           einmal hinzuschreiben (also zu definieren, was in jedem gleichzeitig
           sichtbaren Frame irgend eines beliebigen Framesets angezeigt werden soll,
           falls dieses Blatt einzeln angesprochen wird - beispielsweise könntest
           Du für eventuelle Navigations-Frames auch wiederum Query-Strings brauchen,
           um dem darin enthaltenen JavaScript-Code mitzuteilen, welche Hover-Buttons
           er automatisch präselektieren soll ...) und
        b) JavaScript-Code zu schreiben, welcher den entsprechenden Baumartigen
           "UFL" (uniform frameset locator) auf der obersten Hierarchie-Ebene so
           auseinander nimmt, daß er die Namen der zu generierenden Frames und die
           verbleibenden UFLs der nächst-niedrigeren Ebene extrahieren kann. Mit
           diesen beiden Informationen kannst Du den Frameset generieren - dessen
           Frames werden wieder mit UFLs angesteuert, welche Du mit demselben Java-
           Script-Code wieder zerlegen mußt usw.

        Der Aufwand für die Analyse eines geklammerten Ausdrucks ist rein intellek-
        tuell nicht völlig vernachlässigbar - insbesondere ist das ja eine CH2-
        Sprache, erfordert also das Gedächtnis eines Keller-Automaten.

        Hm ... das wäre doch mal ein netter Feature-Artikel ... JavaScript-Hacker,
        vortreten!

        Viele Grüße
              Michael

        P.S.:   Genauso, wie Du die Namen der Framesets durchreichen mußt, mußt Du
                auch die Größenangaben der jeweiligen Frames innerhalb des Framesets
                durchreichen. Ein "UFL-Knoten" besteht also aus
                1. einer listenartigen Information für diese LayoutInformation
                   (dort muß alles enthalten sein, was Du zum Generieren des <frameset>
                   brauchst - auch die Information, ob es Zeilen oder Spalten sind!)
                   und
                2. einer Liste von Paaren aus Frame-Name und Dokument-UFLs.

        P.P.S.: Das eigentliche Problem scheint mir, daß ein rekursives Laden eines
                beliebig geschachtelten UFL so viele HTTP-Zugriffe und Browser-Re-
                freshes nach sich ziehen wird, daß dem Benutzer vor lauter Flackern
                schwindelig werden dürfte.

  2. Ich vermute mal die folgende Frage wurde schon tausendmal gestellt. Ich hab auch so einige Antworten im Forumsarciv gefunden, dummweise funktionieren die Links von dort zu den Besipielen nicht mehr.

    Also was ich versuche zu machen ist folgendes: Ich habe ein Frameset mit verschachtelten Frames. Wenn nun auf eine Seite innerhalb der Site verlinkt wird (speziell von Suchmaschinen etc.) soll der komplette Frameset nachgeladen werden. Das funktioniert insoweit auch ganz gut, nur eben dummerweise nicht bei verschachtelen Frames, dort werden dann nur Teile nachgeladen.

    Kann man sowas irgendwie umgehen ? Oder funktioniert sowas mit verschachtelten Frames nicht ?

    Als Beispiel könnteman mal die Testseite unten in dem URL nehmen...
    THX für alle antworten ...

    hallo sebastian

    du könntest einfach abfragen ob's parent.frames gibt
    -ja: seite laden
    -nein: frameset mit dieser seite laden, wohin musst halt wissen

    tschüß gerald