molily: Frameset erzwingen?!

Beitrag lesen

Hallo, Christian,

zunächst einmal Hallo, heute ist mein erster Beitrag hier im Forum. Auch ich bin ein reger HTML-Bastler und dabei war Self-html mir immer eine gute Hilfestellung.

Die Freude ist ganz meinerseits. ;)

[...] Klicke ich also im oberen Frame eine Seite und will diese in einem neuen Browserfenster öffnen, öffnet sich natürlich ein neues Fenster mit entsprechender Seite. Der untere Frame fehlt dann aber.

Ich will, dass wenn ich Seite aus dem oberen Frame in einem neuen Fenster öffne oder direkt linke, diese vollständig im gewünschten Frame angezeigt werden, ohne dass ich zu jeder Seite ein neues Frameset schreiben muss, schliesslich habe ich zahlreiche Inhalte.

Richtig, das hast du soweit sehr treffend erkannt. Eine Möglichkeit, wie du bereits sagst, wäre natürlich, für jede Unterseite ein Frameset zu schreiben - glücklicherweise ist das nicht nötig, da du das Frameset mit Parametern versorgen kannst und die Frames dynamisch füllen kannst (in diesem Fall den oberen Frame, denn der ändert sich).

Ich habe irgendwo im Internet - blöderweise weiss ich die URL nicht mehr - eine passende Lösung des Problems gesehen. Mittels irgendeinem JavaSkript - Codes wird quasi ein Frameset erzwungen, sodass binnen kurzer Zeit die einfache Seite ins Frameset umspringt, sprich auch mit dem unteren Frame; oben die gewünschte Seite. Der entsprechende Quelltext ist mir leider unbekannt.

Exakt beschrieben, genauso funktioniert der Mechanismus. Es handelt sich dabei wahrscheinlich um eine Methode, wie sie im Artikel http://aktuell.de.selfhtml.org/artikel/javascript/dyn-frames/index.htm beschrieben wurde.
Dabei enthält jede Unterseite ein JavaScript-Code, welcher überprüft, ob die Seite im Frameset geladen wurde, das geht beispielsweise über window.name, welches in deinem Fall im positiven Falle »headframe« heißen müsste, oder über parent.headframe, also die Überprüfung, ob im darüberliegenden Frame (sofern vorhanden) ein Frame beziehungsweise Fensterobjekt namens »headframe« existiert.

Falls kein Frameset gefunden wird, wird das Frameset-Dokument annavigiert (über location.href, http://selfhtml.teamone.de/javascript/objekte/location.htm#href). Dieser Frameset-Ressource wird aber über den Query String, das ist der Bestandteil der URL, welcher nach dem ? (Fragezeichen) folgt, die Adresse der aktuellen Unterseite übergeben, genauer gesagt der Pathname, das ist beispielsweise der folgende Teil:

http://www.domain.de/verzeichnis/unterseite123.html
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Wie in http://aktuell.de.selfhtml.org/artikel/javascript/dyn-frames/index.htm#a3 beschrieben, sieht die Adresse des Framesets inklusive dem Parameter dann beispielsweise folgendermaßen aus:

http://www.domain.de/frameset.html?/verzeichnis/unterseite123.html
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
oder wahrscheinlich mit url-encodetem Parameter:
http://www.domain.de/frameset.html?%2Fverzeichnis%2Funterseite123.html
(Sofern ich mich nicht irre. ;))

Im Frameset kann nun dieser Parameter, der Query String (siehe auch: http://selfhtml.teamone.de/cgiperl/intro/umgebungsvariablen.htm#uebersicht), entweder serverseitig beispielsweise über Perl oder PHP oder clientseitig über JavaScript ausgelesen werden. In dem genannten Artikel ist die JavaScript-Lösung geschildert, ich würde jedoch eine serverseitige Lösung empfehlen, da du dadurch Links zu den Frameset-Seiten mit dem jeweiligen Parameter setzen kannst, ohne dass der Benutzer JavaScript aktiviert haben muss; das dürfte auch eventuell für Suchmaschinen interessant sein. Eine solche Variante mit Perl oder PHP ist im Artikel http://aktuell.de.selfhtml.org/artikel/phpasp/php-frames/index.htm beschrieben. Im Frameset-Script wird der Query String ausgelesen und einfach als src-Attributwert in das betreffende frame-Element geschrieben (sofern Parameter übergeben wurden, ansonsten wird die Startseite eingebunden).

Toll wäre es, wenn mir jemand eine ähnliche Lösung erleutern kann, oder den erforderlichen Quelltext mit kurzer Erklärung zum Verständnis geben kann.

Die genannten Artikel erklären sich größtenteils von selbst, die Beispiele sind relativ einfach ohne große Veränderungen einbaubar.

Das ganze möglichst schnell natürlich.

Hehe. Sicherlich.

RIESEN Dank im Vorraus. Ansonsten stöber ich mal zum Spass im Forum, vielleicht kann ich hier und da auch eine Antwort beisteuern.

Immer gerne. ;)

Die Frage mit der Framehöhe, MSIE und Opera verstehe ich nicht ganz - kannst du eventuell eine Beispielseite vorbereiten und hochladen, anhand welcher der Unterschied ersichtlich wird? (Vielleicht helfen auch detaillierte Angaben über die verwendeten Browserversionen, Screnshots wären auch hilfreich, wenn möglich.) Am DOCTYPE liegt es meines Wissens nicht, der Opera 7.x hat zwar neuerdings auch einen DOCTYPE-Switch, also zwei verschiedene Rendermodi, aber die Darstellung von Framesets ist meines Wissens in beiden Browsern unabhängig vom Rendermodus. Welche Dokumenttypdeklarationen verwendest du auf den betreffenden Seiten?

Grüße,
Mathias