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:
Nun habe ich mir aber die Nachteile von Frames überlegt:
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.
2. Umständlich zu bookmarkenAuch dieses Problem habe ich gelöst. Gehen Sie folgedermassen vor, wenn Sie eine Unterseite bookmarken wollen:
ChaosFalls Sie meine kleine Beschreibung oben nicht verstanden haben, hier ein kleiner Vorgehenshinweis, der Ihnen hilft, das Problem zu reproduzieren:
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. ... <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.... AbhilfeNatü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 unbrauchbarDies 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:
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)
©1999 by Pilif |
|