Frames - Anwendung

Konstruktionen

 
Um Frames konstruieren zu können, muß zunächst in einer eigenen HTML-Datei ein Frameset definiert werden. Dieses besteht normalerweise aus den Koordinaten für die Positionierung der einzelnen Rahmen auf dem Bildschirm, sowie den Angaben für die Dateien, die in diese Rahmen geladen werden sollen. Die Frameset-Programmieranweisungen stehen dabei zwischen </HEAD> und <BODY>.

Ein Beispiel für eine komplette HTML-Datei, die ein einfaches Frameset mit 2 untereinander angeordneten Bildschirmbereichen aufruft:

<HTML>   Beginn des HTML-Dokuments

    <HEAD>   Beginn der Kopf-Information

        <TITLE>   Beginn der Titelinformation
          Dieser Titel wird übrigens bei Framesets auch beim Aufruf anderer Dateien
          innerhalb der Homepage unveränderlich angezeigt
        </TITLE>   Ende der Titelzeile

    </HEAD>   Ende der Kopf-Information

    <FRAMESET ROWS="25%,75%">   Beginn der Frameset-Befehle mit Aufteilung des
           Browser-Anzeigefensters in zwei waagerechte Bereiche

        <FRAME SRC="verweise.htm" NAME="Verweisfenster">
          In das obere (kleinere) Fenster wird die Verweisdatei geladen

        <FRAME SRC="inhalt_1.htm" NAME="Hauptfenster">
          In das untere (größere) Fenster wird eine Inhaltsdatei geladen

    </FRAMESET>   Ende der Frameset-Informationen

    <BODY>
          Beginn des sichtbaren Seiteninhalts für Browser, die mit Framesets nichts anfangen können
          Hinweistext z.B.:
          Wenn Sie den Text hier sehen können, sind Sie kein Besitzer eines framefähigen Browsers.
          Benutzen Sie daher bitte die <A HREF="start.htm">Startseite ohne Frames</A>
          Ende des sichtbaren Seiteninhalts
    </BODY>

</HTML>   Ende des HTML-Dokuments

Die einfachste Form des Framesets besteht also aus zwei Fensterbereichen und drei Dateien. In einer Haupt-Datei stehen die eigentlichen Anweisungen zum Frameset. Diese muß als erste aufgerufen werden, wenn ein Frameset angezeigt werden soll. In dieser Datei werden dann zwei weitere Dateien notiert, für jeden Bereich eine. Wenn eine Datei nicht explizit aufgerufen wird, bleibt das entsprechende Fenster leer. Es müssen übrigens keine HTML-Dateien in die Frames geladen werden. Sehr oft werden auf Webseiten Grafiken in bestimmten Bereichen plaziert. So bleiben z.B. Logos oder Werbebanner ständig sichtbar.

Werden die ROWS (Reihen) des Beispiels durch COLS ersetzt, erhält man eine Aufteilung in senkrechte Spalten. Im obigen Beispiel würde das eine schmalere linke Spalte und eine breitere rechte ergeben. Natürlich können auch drei oder noch mehr Reihen oder Spalten angegeben werden. Es müssen nur weitere Prozentangaben gemacht und entsprechend geändert werden. Alternativ zu Prozentwerten können auch absolute Zahlenwerte in Pixel benutzt werden.

Es sind auch kompliziertere Konstruktionen möglich, die den Bildschirm z.B. in Reihen und zusätzlich in Spalten aufteilen. Dazu muß innerhalb eines Framesets ein weiteres Frameset definiert werden. Dies erfordert eine Verschachtelung der Befehle. Dabei ist eine besondere Sorgfalt an den Tag zu legen. Sonst kann es z.B. passieren, daß der Bildschirm in immer mehr und immer kleinere Bereiche aufgeteilt wird.

Hinter FRAME SRC wird jeweils der Name der Dateien angegeben, die beim ersten Aufruf des Framesets erscheinen sollen. Bei NAME ist der spezielle Name für den jeweiligen Frame anzugeben. Dieser darf weder Leer- noch Sonderzeichen enthalten und sollte relativ kurz sein. Zum Aufruf der Dateien wird weiter unten eingegangen.

Im BODY-Bereich können – wie oben gezeigt – Hinweise für Nutzer stehen, die mit einem nichtframefähigen Browser arbeiten. So ein Browser kann ja mit Frames nichts anfangen und übergeht entsprechende Anweisungen einfach. Den Text im BODY-Bereich liest er natürlich weiterhin aus, während ein framefähiger Browser den BODY-Bereich überspringt und nicht ausgibt.

Alternativ zum BODY-Bereich können Sie auch den NOFRAMES-Befehl setzen. Ein zwischen <NOFRAMES> und </NOFRAMES> plazierter Text wird von einem framefähigen Browser nicht angezeigt. Nichtframefähige Browser können zwar mit dem NOFRAMES-Befehl auch nichts anfangen, zeigen aber den Text dazwischen ganz normal an.

Weitere Attribute zur Darstellung der Begrenzungsrahmen können hinter FRAMESET hinzugefügt werden. Dies sind:

MARGINWIDTH=n und MARGINHEIGHT=n legen die Pixel-Abstände innerhalb des Frames zu den Rändern links und rechts sowie oben und unten fest.

SCROLLING=NO unterdrückt den Scrollbalken. Bitte bedenken Sie, daß der vollständige Inhalt eines Fensters u.U. nicht zu sehen ist. Wenn das Scrollen abgeschaltet wird, sind die nicht sichtbaren Informationen nicht mehr erreichbar.

SCROLLING=YES erzwingt auch dann den Scrollbalken, wenn es vom Fensterinhalt eigentlich nicht notwendig wäre.

NORESIZE (ohne Wertangabe) verhindert das Verschieben der einzelnen Framebereiche, welches ansonsten durch Ziehen mit der Maus möglich ist.

BORDER=n notiert einen Rahmen der Stärke n zwischen den Bereichen. Ein Wert von 0 verhindert die Anzeige der Begrenzungsrahmen.

Versionsabhängig lassen sich die Rahmenbegrenzungen mit BORDERCOLOR auch farbig darstellen.

 

Verweise

 
Im genannten Beispiel ist der Bildschirm in 2 Bereiche aufgeteilt. Im oberen könnten die Verweise zu den einzelnen Themenbereichen der gesamten Homepage stehen, also so eine Art Inhaltsübersicht. Wird ein Verweis angeklickt, erscheint die entsprechende Seite im eigentlichen Hauptteil im unteren Bildschirmbereich.

In dem Beispiel wird eine Datei (inhalt_1.htm) schon beim Aufruf des Framesets automatisch in den Hauptteil geladen und ist gleich sichtbar. Um andere Seiten in den Hauptteil zu bekommen, sind aber noch weitere Vorkehrungen zu treffen. Normalerweise wird ja ein Verweis, um eine HTML-Datei zu laden, in folgender Form definiert:

<A HREF="zieldatei.htm">Hinweistext</A>

Innerhalb eines Framesets funktioniert das so aber nicht. Hier muß bei den Verweisen zusätzlich angegeben werden, in welchem Fenster die Seite erscheinen soll. Dies wird erreicht durch das Attribut TARGET und die Angabe des entsprechenden Fensternamens, wie er unter NAME im Frameset festgegelegt wurde. Dabei ist auf exakte Übereinstimmung des Namens im Frameset und des Namens bei TARGET zu achten:

<A HREF="zieldatei.htm" TARGET="Hauptfenster">Hinweistext</A>

Für das Beispiel wären also in der "verweise.htm"-Datei die Links zu notieren mit

<A HREF="inhalt_1.htm" TARGET="Hauptfenster">Inhalt 1</A>
<A HREF="inhalt_2.htm" TARGET="Hauptfenster">Inhalt 2</A>
<A HREF="inhalt_3.htm" TARGET="Hauptfenster">Inhalt 3</A>

Und so weiter. Würde TARGET nicht angegeben, würden die aufgerufenen Dateien nicht im Hauptfenster erscheinen, sondern im Verweisfenster selbst. Das wäre in diesem Fall nicht sehr sinnvoll.

Bitte beachten Sie, daß es bei TARGET vier vorbelegte Namen gibt, die folgende Bedeutung haben:

  • TARGET="_self"
    Das Dokument erscheint in dem Fenster, in dem der Link angeklickt wurde. Dies ist die Standardeinstellung. Wenn also bei einem Verweis das Attribut TARGET nicht eingesetzt wird, wird die angelinkte Datei im gleichen Fenster aufgerufen, in dem auch der Link steht.
  • TARGET="_parent"
    beendet das Frameset und der Inhalt der Datei wird wieder auf der ganzen Bildschirmseite angezeigt oder erscheint im übergeordneten Frame.
  • TARGET="_blank"
    Das aufgerufene Dokument erscheint in einem eigenen, zusätzlichen Browserfenster. Das Attribut sollte benutzt werden, um "fremde" Seiten nicht zum Bestandteil der eigenen Homepage zu machen.
  • TARGET="_top"
    löst die Frames auf und das Dokument erscheint im ganzen Browserfenster. Das Attribut ist ebenfalls gut brauchbar, wenn auf fremde Projekte gelinkt wird.

Bitte achten Sie auf die genaue Schreibweise der vorbelegten Namen. Auch die Kleinschreibung sollte benutzt werden, da ich schon erlebt habe, daß das ansonsten nicht wie gewünscht funktioniert.

 

Inline-Frames

 
Eingebetttete Frames sind viel einfacher zu programmieren als die normalen Frames. Es ist lediglich ein Befehl in einer HTML-Datei notwendig. An der aufrufenden Stelle erscheint dann ein auf der Seite eingebettetes Fenster entsprechend den gemachten Größenangaben mit dem Inhalt der gewünschten Datei. Diese Datei wird automatisch mit der eigentlichen HTML-Datei geladen. Wenn sie nicht vorhanden ist, wird eine Fehlermeldung ausgegeben und im Fenster erscheint der entsprechende browsertypische Hinweis auf die fehlende Datei.

Befehlssyntax mit anschließendem Beispiel einer Textdatei:

<IFRAME SRC="datei" NAME="Fenster" WIDTH=n HEIGHT=n"></IFRAME>

Wenn Ihr Browser diesen Befehl nicht interpretieren kann, z.B. ältere Netscape-Versionen, dann wird statt des eingebetteten Frame ein Hinweistext sichtbar, welcher vorher zwischen <IFRAME SRC=…> und </IFRAME> notiert werden muß.

Hinweis Netscape benutzt ab Version 4 eine ähnliche Technik, die mit Layern arbeitet. Auf diese gehe ich aber im Rahmen meines Projektes nicht ein. Netscape 6 versteht auf jeden Fall den IFRAME-Befehl auch ohne irgendwelche Tricks.

Interessant ist, daß Sie per Verweis weitere Inhalte in dem Fenster aufrufen können und daß Sie auch darin enthaltene Links (z.B. von HTML-Dateien) benutzen können. Natürlich könnten Sie auch auf externe Seiten linken und in dem Fenster darstellen. Auf Grund des besonderen Charakters des eingebundenen Frame sollten Sie jedoch auf jeden Fall die Urheberrechte beachten. Am besten sollten Sie ganz auf die Einbettung fremder Seiten verzichten.

Durch Anklicken von Verweisen können also weitere Dateien im Frame dargestellt werden. Dazu ist ein Name des Frame notwendig, welcher durch das Attribut TARGET angesprochen wird. In allgemeiner Form lautet die Anweisung für einen derartigen Verweis:

<A HREF="zieldatei" TARGET="Framefenstername">Hinweistext</A>

Im Fenster können z.B. auch Grafikdateien präsentiert werden:

Beispiel: Eine Grafik-Datei im Fenster (s.o.) aufrufen

Beispiel: Noch einmal die Text-Datei im Fenster (s.o.) aufrufen

Browser ohne Darstellungsmöglichkeit von eingebetteten Frames öffnen die Dateien entweder auf einer neuen Seite oder in einem weiteren Fenster.