Felix Riesterer: Frames on-the-fly zu frameloser HTML-Seite?

Liebe Selfer,

hat schonmal jemand versucht, ein Script (PHP o.ä.) zu schreiben, das Framesets "interpretiert" und zu einer frame-losen HTML-Seite zusammensetzt?

Ich stelle mir das z.B. so vor:

------------------------------------
|             Header               |
------------------------------------
|       |                  |       |
|       |  Content-Frame   |       |
| Navi- |                  |       |
| Frame |                  |nochwas|
|       |                  |anderes|
|       |                  |       |
|       |                  |       |
------------------------------------
|             Footer               |
------------------------------------

Obiges Frameset besteht aus fünf einzelnen HTML-Dateien, die von einer sechsten (die das Frameset enthält) eingebunden werden.

Ich stelle mir ein Script vor, das nun aus allen sechs HTML-Seiten _eine_ HTML-Seite baut, deren Funktionalität trotzdem erhalten bliebe. Die Anordnung der Frames ließe sich mittels CSS ja nachbilden. Da manche Teile statisch sind (Header und Footer, sogar Navi, da alles ohne Javascript), würde das die Sache sogar vereinfachen...

Der Hintergrund ist der, dass ich ein Webprojekt pflegen soll, auf dem manche Teilbereiche mit Framesets realisiert wurden. Schlimmer noch, es ist durchaus möglich, dass neue Teilbereiche als fertige Framesets hinzukommen, die ich dann in das Ganze einbinden soll. Da dieses Projekt jetzt aber mit Hilfe von PHP und CSS neugestaltet wird, versuche ich diese Framesets nicht um- oder neu schreiben zu müssen, sondern mittels Script darzustellen. Es hätte auch den Vorteil, dass alte URLs weiterhin zum Content führen, dessen Frameset jetzt aber nicht erst nachgeladen werden müsste, da es das Frameset als solches ja nicht mehr gibt, sondern einfach als "reguläre" Seite aufgerufen werden kann.

Hat sich jemand an so etwas schonmal versucht?

Liebe Grüße aus Ellwangen,

Felix Riesterer.

  1. Hallo Felix Riesterer,

    hat schonmal jemand versucht, ein Script (PHP o.ä.) zu schreiben, das Framesets "interpretiert" und zu einer frame-losen HTML-Seite zusammensetzt?

    [...]
    Hat sich jemand an so etwas schonmal versucht?

    Du kann bei jedem Browser- oder Suchmaschinenprogrammieren nachfragen, denn etwa in diesen Dimensionen müßte sich ein solches Script bewegen! Beginnend bei HTML entstehen haufenweise Probleme. Hier gilt es die doppelten ID- und NAMEN-Attribute aller Dokumente zu harmonisieren und die gesamte Verweis- und Referenzenstruktur, die bedingt durch unterschiedliche Ablageorte im Dateisystem entstehen können, auf die neue Situation einzupassen.

    Bei JavaScript hat der Spaß dann schon wieder gänzlich andere Ausmaße. Beispielsweise könnte mit hoher Wahrscheinlichkeit document.gentElementsByTagName('div')[4].machwas() im ursprünglichen "naviFrame" nunmehr ein gänzlich anderes Element ansprechen. Denke auch an die vielen Fehlermeldungen, die durch die Aufrufe aus Browserinstanzen herrühren, die es nun nicht mehr gibt. Also müßte konsequenter Weise JavaScript entfernt werden. Da muß dann von Hand wieder nachgearbeitet werden, wenn dies so scriptlos nun auch wieder nicht erwünscht ist. Oder aber, und das nenne ich wirklich eine Herausforderung(!), selbst JavaScript mit PHP-DOM (oder lieber selbstgebastelt ;) und der HTML-Struktur einzupassen.

    Auch eingebundenes CSS will abgestimmt werden, dort kommt dann nochmall eine ganz andere Dimension von sich überschneidennen Klassen auf das Script zu.

    Wenn man schon mal dabei ist, kann man gleich auch die Seiten validieren und unnötiges Whitespace/Kommentare entfernen und gz-Versionen/Charset-Versionen für Content-Negotiation erstellen.

    Das alles hört sich doch schon mal nach richtig viel an, aber wie sieht es mit frontpage-Erweiterungsauszeichnungne oder SSI-Einschlüssen aus? Also müssen die Dokumente auch erstemal via HTTP bezogen werden. Das mal so als kleinen Problemaufriß. Wie gesagt, hört sich spannend an und würde mich reizen, aber leider keine Zeit.

    Wäre es dann nicht sinnvoller Parteien, die Framesets in das Projekt einspeisen eine XML-Lösung nahezulegen und zu bauen? Für meine Begriffe würdest Du mit einem CMS, daß auf XML basiert (oder von mir aus auch mit einer DB arbeitet) wesentlich leichter zum Ziel gelangt.

    Gruß aus Berlin!
    eddi

    1. Lieber eddi,

      ich habe mit Freuden Deine Antwort gelesen, denn sie war _sehr_ aufschlussreich für mich!

      Das mit CMS habe ich bereits umgesetzt. Trotzdem kommen in Zukunft noch das ein oder andere Mini-Web-Projekt, das mit irgendso'nem Editor (Frontpage?) zusammengeschustert (Word->Save as->HTML *urgs*) worden ist. Da dachte ich mal kurz in diese Richtung...

      Aber ich löse das anders. Deine Ausführungen haben mich da schnell kuriert. ;-)

      Liebe Grüße aus Ellwangen,

      Felix Riesterer.