HTML/Frames

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Hinweis:

Verzichten Sie im WWW auf Framesets und verwenden Sie diese nur, wenn keine andere Technologie zur Verfügung steht. Wenn Sie Teile der Seite auslagern wollen, sind serverseitige Techniken meist besser geeignet.

Inhaltsverzeichnis

[Bearbeiten] Frames und gute Praxis

[Bearbeiten] Allgemeine Hinweise

Frames sind eine Entwicklung von Netscape und wurden vor allem in einer Zeit fleißig gebraucht, als Provider Möglichkeiten des serverseitigen Zusammenbaus von Websites nur selten anboten. Heute hat sich dies aber geändert. Außer bei Gratisprovidern bieten heute fast alle Provider mindestens eine serverseitige Sprache zur Verfügung, welche den traditionellen Bedarf für Frames obsolet machen.

Framesets gehören zu den vielgescholtenen Elementen in der WWW-Praxis. Dies hat mehrere Gründe. Bevor Sie Frames verwenden, sollten Sie sich folgendes überlegen:

  1. Frames präsentieren Dokumente nebeneinander im gleichen Viewport, ohne dass ein logischer Bezug zwischen den Dokumenten besteht. Oftmals wird aber ein logischer Bezug erwünscht:
    Der Frame mit der Navigation soll den Linkeintrag deaktivieren, wenn in einem anderen Frame eben dieses Dokument bereits geladen ist. Dies gehorcht dem Prinzip: verlinke nicht die aktuelle Seite.
    Wenn ein Gast ein Dokument über einen Suchdienst aufruft, möchte er auch Inhalte, die bei Frames eben nicht verfügbar sind. Er möchte zum Beispiel die Navigation.
  2. Frames erlauben es, schaufensterartig Inhalte einzubinden, egal ob diese von der gleichen Domain oder einer fremden Domain stammen.
    Das Einbinden von Inhalten von einer anderen Domain ist aber in der Regel unerwünscht und bedarf der Bewilligung durch die betreffenden Betreiber.
  3. Frames teilen das Fenster auf. Die Aufteilung kann aber Probleme bereiten.
    Mobilgeräte können Frames oft nicht richtig darstellen.
    Betrachter möchten manchmal die Rahmen der Frames verschieben, was aber durch Autoren oft unterbunden wird.
    Betrachter stellen ihren Browser deshalb so ein, dass Frame-Rahmen immer verschoben werden können. Der Inhaltsautor verliert damit die Kontrolle über das Aussehen dieser Rahmen.
  4. Frames laden Unterdokumente. Browser können im Locationbar aber nur eine Adresse darstellen, jene des aufrufenden Framesets.
    Inhaltsframes können durch unerfahrene Browseranwender nicht in die Bookmarks aufgenommen werden, bzw. das Kopieren der Adresse zur Erstellung einer Referenz fällt schwieriger.
    Wenn Frames visuell nahtlos gestaltet sind, kann einem Gast das Bewusstsein von Frames entzogen werden, wodurch die vorher genannten Nachteile versteckt werden.

Man kann zwar einige dieser Nachteile mit Javascript ausbügeln. Dadurch schafft man jedoch eine andere Abhängigkeit.

Es gibt an Stelle der framesets die iframes-Technik, die einige Probleme, aber nicht alle, beseitigt. Auch bei iframes sollten Sie keine Hauptinhalte einbinden, sondern nur Bestandteile, die Sie nicht in einem Suchdienst erwarten.

[Bearbeiten] Verschiedene Frametechniken

Die Originale Frametechnik verwendet Framesets. Diese weisen die obigen Nachteile auf. Alternativ gibt es die Möglichkeit mit Iframes zu arbeiten. Hierbei wird in einem Bereich Inhalt eingebettet, wobei das iframe-Element die Rolle eines normalen HTML-Elements hat. Die Methode ist vergleichbar der Verwendung eines img- oder object-Elements.

Beispiel: Frameset
┌────────────────────┐
│ frameset.html      │
├────────────────────┤
│ <frameset>...      │
│┌──────────────────┐│
││ Headframe        ││
││ (navigation.html)││
│├──────────────────┤│
││ Contentframe     ││
││ (content.html)   ││
││                  ││
│└──────────────────┘│
│ ...</frameset>     │
└────────────────────┘
  • Das Frameset wird einmal zentral definiert.
  • Die Frameset-Adresse ist im Browser Location-Bar vorhanden. Der Inhaltsframe kann nur umständlich referenziert werden.
  • Ein Gast via Suchmaschine sieht keine Navigation.
Beispiel: Iframe
┌─────────────────────────┐
│ content.html            │
├─────────────────────────┤
│ <iframe                 │
│  src="navigation.html"> │
│┌───────────────────────┐│
││ (navigation.html)     ││
│└───────────────────────┘│
│ </iframe>               │
│ Inhalt ...              │
│                         │
│                         │
│                         │
└─────────────────────────┘
  • Iframe wird in jedem Inhaltsdokument notiert.
  • Die Inhaltsseite ist im Browser Location-Bar vorhanden.
  • Für Gäste via Suchmaschine wird die Navigation in das Inhaltsdokument eingebettet.

Iframes nehmen Ihnen einige Nachteile der Frameset-Technik ab. Es bleiben aber folgende Nachteile:

  • Das aufrufende Iframe weiß nichts über die visuelle Größe des eingebundenen Dokuments. Es geschieht keine automatische nahtlose Einbettung.
  • Es bleibt die irritierende Führung mit der TAB-Taste, d.h. erschwertes Navigieren durch das Dokument mit der Tastatur.
  • Die Tugend verlinke nicht das aktuelle Dokument ist immer noch nicht erfüllt.

[Bearbeiten] Ein Frameset einrichten

Frames bestehen aus einer HTML-Seite, welche das Frameset definiert, sowie aus Seiten, die in dieses Frameset geladen werden sollen. In HTML definieren Sie die Frameset-Seite mit einem Doctype, der für Framesets geeignet ist (siehe Dokumenttyp-Deklaration).

Das Frameset wird vor dem optionalen body-Element definiert.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
  "http://www.w3.org/TR/html4/frameset.dtd">
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title>Frameset</title>
  </head>
  <frameset cols="200, *">
    <frame src="FRAMESET_navigation.html" name="navigation">
    <frame src="FRAMESET_home.html" name="inhalt">
  </frameset>
</html>
Das Attribut cols legt die Spalten eines Framesets fest. In diesem Beispiel werden zwei Spalten definiert. Die erste Spalte erhält eine Breite von 200 Pixeln, durch * erhält der zweite Frame automatisch den Rest der Breite des Browserfensters. Die gleiche Syntax wird für das Festlegen von Zeilen (rows) verwendet.
In das Frameset werden die zwei benötigten Frames eingebunden. Über das Attribut src werden die verwendeten Ressourcen bestimmt.

[Bearbeiten] Links in Framesets definieren

Um einen Link zu erstellen, dessen Ziel in einem anderen Frame angezeigt werden soll, muss der Zielframe ein name-Attribut erhalten. Der Link erhält das Attribut target. Es braucht als Wert den Namen des Zielframes.

Beispiel
<a href="content.html" target="inhalt">Rubrik 1</a>
Beachten Sie: In den strict-Varianten von (X)HTML ist das Attribut target nicht erlaubt.
Meine Werkzeuge
Namensräume

Varianten
Aktionen
Übersicht
Hilfe
SELFHTML
Diverses
Werkzeuge
Flattr
Soziale Netzwerke