Frames

Wie kann man nur Frames verwenden?

Dies habe ich mich zuerst auch gefragt. Das Problem bei den Dingern ist aber, dass sie sehr nützlich sind, um beispielsweise eine Navigationsleiste zu programmieren. Man hat nur noch eine Datei zu verändern, wenn eine Rubrik dazukommt (bei mir sind es 4, aber dazu später mehr), nicht aber 50. Aber das ist nicht alles. Ich habe hier eine kleine Übersicht zusammengestellt, die die Vorteile von Frames aufzeigt:

  • Einfache Navigationsleiste (wenige Dateien zu verändern)
  • Seiten werden beim Laden schon angezeigt (keine Tabelle über die ganze Seite)
  • Bessere Struktur
  • ...
Alleine schon der zweite Punkt hat den Ausschlag gegeben (vielleicht auch der erste: Die Anzahl an Seiten auf meiner Site ist drastisch angestigen). Gleichzeitig hatte ich eine gewisse Zeitlang Tabellen verwendet, wobei an deren unteren Rand die Möglichkeit bestand, abzustimmen, ob Frames verwendet werden sollen, oder nicht. Das Resultat fiel eindeutig für Frames aus.

Nun habe ich mir aber die Nachteile von Frames überlegt:

  1. Alte Browser bleiben aussen vor.
  2. Umständlch zu bookmarken
  3. Wenn ein Frame auf einer Seite gleich heisst, wie das auf einer anderen Seite, die im ersten Frame drin geladen wird, gibt es Chaos.
  4. Auf kleinen Monitoren unbrauchbar
Viele Nachteile eigentich. Mehr als Vorteile. Dennoch habe ich alle unter Kontrolle gebracht. Lesen Sie hier, wie.

1. Alte Browser bleiben aussen vor

Das stimmt nur im Prinzip. In der HTML-Sprache gibt es den Tag <noframes>, der es erlaubt, Code einzugeben, der dann von Browsern, die keine Frames unterstützen angezeigt wird. Viele Firmen lassen sich hier einen kleinen Text anzeigen, der den Benutzer anweist, einen Browser zu besorgen, der Frames unterstützt.
Nagut; meine Seite tut dies auch. Dennoch hat der Benutzer Vollzugriff auf alle Inhalte (auch über die Sitemap).

2. Umständlich zu bookmarken

Auch dieses Problem habe ich gelöst. Gehen Sie folgedermassen vor, wenn Sie eine Unterseite bookmarken wollen:

  1. Klicken Sie auf den Button "Neuses Fenster"(N) oder "Frames ausschalten"(U). Wie auch immer. Der Lohn für Ihre Mühe ist die Unterseite ganz jungfräulich in einem Fenster.
  2. Bookmarken Sie die Unterseite. Verwenden Sie dazu die übliche Mehtode (Strg-D kommt vielfach hin).
  3. Falls Sie die Unterseite aufrufen wollen, öffnen Sie das Bookmark. Um nun die Navigationsleiste wieder einzuschalten (ohne die aktuelle Unterseite zu verlieren), klicken Sie auf den Button "Frames reaktivieren"(F).
    Ich will hier keine Show abziehen, aber diese Technick läuft dank CGI mit jedem Browser. Es wird keinerlei JavaScript eingesetzt!

Chaos

Falls Sie meine kleine Beschreibung oben nicht verstanden haben, hier ein kleiner Vorgehenshinweis, der Ihnen hilft, das Problem zu reproduzieren:

  1. Klicken Sie den Link zuunterst an, nachdem Sie die folgenden Schritte gelesen haben.
  2. Die Page unten ist die Homepage meiner Schule. Das Hauptframe (das grosse) heisst "mainframe", genauso, wie das äussere, grosse aus meiner Homepage (das unter dem Titel).
  3. Klicken Sie nun irgendeinen Button in der Navigationsliste der Schule an.
  4. Versuchen Sie, ohne den Back-Button, einen zweiten anzuklicken
  5. Verwenden Sie den Link im Titel, um zurückzukehren...
Leider wurde die Homepage meiner Schule redesignt, so dass das Beispiel nicht mehr funktionniert.

Wie kommt das Verhalten zu Stande? Hierzu einige Erklährungen zum Erstellen von Frames:

Frames werden (unter anderem) mit Hilfe des Tags <frame> erstellt, das wiederum ein Attribut Name nit sich führt.
Genau über dieses Attribut kann man dann bei Links steueren, in welchem Unterfenster der Browser die gewünschte Datei laden soll. Dies funktioniert mit dem Attribut target des Tags "<a>". Soweit, sogut. Nach diesem Prinzip funktioniert auch die Homepage meiner Schule:

 ...
 <a href="html/schulplan.htm" target="mainframe"><img src=".."></a>
 <a href="html/termine.htm" target="mainframe"><img src=".."></a>
 <a href="html/sov.htm" target="mainframe"><img src=".."></a>
 ...
Dies sind einzelne Links aus der Navigationsbar (die mit den coolen, animierten Bildern). Wie wir sehen, zeigen alle Links in das Frame mit dem Name "mainframe".
Und dies ist das Problem:
 ...
 <frameset  rows="60,*">
     <frame name="45top33" src="cdemo.html" marginwidth="10" marginheight="10"
 	 scrolling="auto" frameborder="no" noresize>
     <frame name="mainframe" src="/hopro/" marginwidth="10" marginheight="10"
 	 scrolling="auto" frameborder="no" noresize>
 </frameset>
 ...
Dies wiederum ist ein Ausschnitt aus der Datei, die das äussere Frame (das mit der grauen Textur, dem Titel und dem Link zurück hierher) erstellt hat. Wir sehen: zweimal Mainframe: Einmall im Frameset, das meine Homepage erstellt hat und einmal auf der Seite meiner Schule.

Die modernen Browser versagen hier kläglich, da si bei gleichnamigen Frames von Aussen nach Innen vorgehen. "Mein" Mainframe hat also priorität, was dazu führt, dass das ganze Layout meiner Schule zerstört wird.

Dies klingt wohl etwas konstruiert, aber seien Sie ehrlich: Ist ein Name wie "mainframe" oder gar "main" nicht recht plausibel? Es scheint so, als wäre ich einer der ersten, denen dieser Bug aufgefallen ist, so dass die Namen durchaus recht geläufig sein dürften....

Abhilfe

Natürlich kann man Abhilfe schaffen: Das Eine (und auhc das Beste) ist es, alle Links nach "Ausserhalb" in ein neues Fenster (target="_new") oder im selben Fenster, aber ohne Frames zu laden (target="_top"). Falls man schon unbedinngt den User auf die eigene Homepage aufmerksam machen muss, kann ein Kleines JavaScript-Fenster mit einem eingebauten Button helfen, das den ursprünglichen Browser knallhart wieder auf die Homepage zurückbringt.

So kann man immerhin nicht verursacher des Problemes sein. Opfer ist aber dennoch möglich, wobei die folgenden Tricks helfen:

 <script language="JavaScript">
 <!--
 if (self != top) {
  top.location.href=window.location.href;
 }
 //-->
 </script>
Dieser Code in der Datei, die die Frames für die Homepage erstellt, räumt gehöhrig auf: Alle Browser, die JavaScript unterstützen, entfernen eventuell bereits vorhandene Frames.

Was aber, wenn der Browser des Besuchers kein JavaScript unterstützt? Nun, die Frames einfach entfernen ist nun nicht mehr möglich. Ein kleiner Link wirkt aber auch hier Wunder:

 <a href="#" target="_top">Hier Klicken, um Frames zu killen</a>
Weiterhin empfehle ich eine weitere Vorsichtsmassnahme, die ganz gezielt den obigen Bug beseitigt: Wenn man den Frames, die man verwendet ausgefallene Namen gibt, geht man sicher, dass der Bug nicht auftritt: Die Namen meiner Frames wurden mit einem kleinen C-Programm erstellt, das den Auftrag hatte, ein Wort aus zufällig gewählten Zahlen und Buchstaben zu erstellen.

Hier gilt: Je länger das Wort, desto eher ist der Bug gefixt. Sie sollten aber keine Sonderzeichen oder Umlaute verwenden!

4. Auf kleinen Monitoren unbrauchbar

Dies ist ein Kritikpunkt, der nicht nur für Frames gilt. Nein. Viele Hompeages; auch solche mit Navigationslisten aus Tabellen sind auf einer Auflösung von 640x480 Punkten nicht zu gebrauchen. Es ist schwierig, dieses Problem so zu lösen, wie ich es mit den obigen Problemen gemacht habe. Aber dennoch: Einige Lösungen gibt es schon, nur greifen die meisten beim Besucher ein und nicht bei der Seite selbst:

  • Stellen Sie ihren Monitor auf die höchstmögliche Auflösung ein. Platz auf dem Bildschirm ist wichitger, als 16,7 Mio Farben. Beachten Sie bitte die untenstehende Tabelle

    BildschirmMindestensOptimalMaximum
    14 Zoll640x480640x480800x600
    15 Zoll640x480800x6001024x768
    17 Zoll800x6001152x8821280x1024

    Die Spalte Maximum bedeutet, dass die dort angegebenen Auflösungen meist "gerade noch sichtbar" sind, häufig aber verflimmert und unscharf. Dennoch gibt es Monitore, die die Auflösung schaffen.
    Mindestens meint genau dieses. Weniger ist nicht nur Sinnlos, sondern meist unmöglich und viel zu gross.

  • Denken Sie bei einem 14 Zoll Monitor vielleicht doch mal an ein Update. Die Geräte sind meist sehr alt und werden bald den Gesit aufgeben. Ausserdem reichen 640x480 Punkte unter windows nicht mal aus, um eine A4-Seite im Hochformat, ohne Scrollen darzustellen. Textverarbeitung wird damit so gut wie ausgeschlossen.
Aber auch auf der Seite der Homepage kann man etwas tun:
Mann muss die Möglichkeit geben, die Navigationsleiste auszuschalten
Wie? Meine Intopic-Navbar löst das Problem elegant. Das Problem: Es muss ein CGI-Script installiert werden, dass ich aber fertig von dieser Homepage herunterladbar ist.

Was am Schluss dieses Kritikpunktes bleibt ist wohl auch nur eines: Durch die Ausschaltbarkeit haben die Frames gegenüber der Tabelle sogar noch Vorteile auf PC's mit kleinen Monitoren (oder auf den dummen SetTop-Boxen für den Fernseher)


--Datum der letzten Änderung: 05.05.2000 09:47:49 MEZ--

©1999 by Pilif
 NUF L IS 


 Verwandte Themen

 Internet Links