Hmm, nur ein merkwürdiges Grundgerüst ... für eigene Seiten? Was soll das?
Nun, sinnvolle (und notwendige) Tips & Anleitungen, mit welchen Tags man den
Kopf einer HTML-Datei versehen sollte und muß, gibt es im Web reichlich (z.B.
in selfHTML).
Bei diesem Grundgerüst geht es allerdings um nachträgliche
Erweiterbarkeit der HTML-Seiten, Veränderungen, Anpassungen, etc. - und
zwar ohne die HTML-Dateien nochmal zu editieren und auf den Server zu laden!
Ein neuer Browser hat eine tolle neue Funktion, die man auf jeder Seite verwenden
möchte? Ein Browser hat einen ärgerlichen Fehler, den man umgehen
möchte? Alle zukünftigen Änderungen kann man bequem systemweit
mit einer externen JavaScript-Datei (magichtm.js) erledigen.
Auch wenn man (noch) kein JavaScript beherrscht - oder dies noch nicht sehr
gut tut: Mit diesem Gerüst ist man für die Zukunft gewappnet. Für
eigene Ideen, und für die von anderen. Und da sich dieses Gerüst an den
HTML-Autoren wendet und selbst kein sinnvolles JavaScript enthält
(außer einigen notwendigen Definitionen und Start-Punkten), ist es nicht im
JavaScript-Bereich gelandet, sondern eröffnet den HTML-Bereich ... ;-)
Zum Gerüst selbst: Nach den üblichen Tags und den Stylesheets für Drucker
und Bildschirm kommt der erste Script-Bereich. Er muß im HTML-Head
sein, und definiert einige wichtige Variablen. Im einzelnen:
doc_type definiert den Typ des Dokuments, damit zukünftig
gezielt pro Typ andere Funktionen greifen können. Sinnvolle Werte von
doc_type wären z.B.
Single für eine alleinstehende Seite (mögliche Funktion z.B.:
Entfernen eines übergeordneten Framesets von einem fremden Server, der die
die Seite als "eigene" tarnen möchte)
Frameset für eine eigene Frame-Definition (mögliche Funktion z.B.:
Feststellen, ob alle Frames geladen wurden)
Content für einen Inhalts-Frame (mögliche Funktion z.B.:
Nachladen eines Framesets mit Navigation, falls die Seite von einer
Suchmaschine angesteuert wurde; oder das Fokussieren des Inhalts-Frames zum
leichteren Ausdrucken)
Navigation für einen Navigations-Frame (mögliche Funktion z.B.:
Anpassen Navigation an verschiedene Browser)
Aber der Phantasie sind da natürlich keine Grenzen gesetzt. ;-)
Die Typbezeichnung findet sich übrigens (meistens) im BODY-Attribut
class wieder. Hier dient er als Klassifizierung für CSS, damit
für jeden Typ auch spezifische Stylesheets greifen können (z.B.
unterschiedliche Behandlung von Hintergrundgrafiken, oder eine Selektion,
welche Frames gedruckt werden sollen und welche nicht (eine interaktive
Navigation macht halt auf Papier relativ wenig her ;-))
xJS wird auf false gesetzt und im externen
JavaScript auf true geändert, um Fehler abzufangen, falls die
externe JavaScript-Datei nicht geladen werden kann
Außerdem werden folgende Funktionen im externen JavaScript aufgerufen
(um Fehlern wegen eines fehlenden Scripts vorzubeugen, werden alle Funktionen
mit if(xJS){ } geklammert):
magicGO() wird die Scripts beinhalten, die im Kopf des
HTML-Dokuments ausgeführt werden müssen oder können, z.B.
um neue META-Tags (Überblendeffekte), LINK-Tags (spezielle Style-Sheets)
oder weitere externe Scripts nachzuladen, aber auch, um sofort ein Frameset
nachzuladen, falls der Inhaltsframe ohne dieses aufgerufen wurde. In der
Testseite wird hier die eventuell bereits ermittelte Verbindungsgeschwindigkeit
ausgelesen und eine "Start"-Alert-Box gezeigt.
magicB4() (sprich: "before") ist für die Scripts zuständig,
die im BODY des Dokuments, aber vor dem eigentlichen Seiteninhalt ausgeführt
werden (logischerweise noch während des Ladens), z.B. um eine kleine Menüzeile
auszugeben, einen Sprüche-Ticker (s. Ticker4All),
oder sonstigen HTML-Text. In der Testseite werden hier die Größenvariablen
ermittelt und eine Textzeile ausgegeben.
magicL8() (sprich: "late") ist analog für die Scripts nach dem
eigentlichen Seiteninhalt zuständig (immer noch während des Ladens),
z.B. um dynamisch den HTML-Code zu ändern, eine abschließende Zeile
mit dem Datum der Seite anzuzeigen, oder einen Button zum Menü/zur
nächsten Seite. In der Testseite werden hier ein Link auf eine
JavaScript-Funktion (der wäre, ohne aktiviertes JavaScript,
ohnehin unsinnig) und eine Textzeile ausgegeben.
magicOK() wird nach dem Laden der Seite nebst ihrer Dateien
angesprungen, also nachdem die Seite bereits vollständig angezeigt wird, z.B.
um via DHTML Seitenbestandteile auszutauschen, oder Grafiken nachzuladen.
In der Testseite wird hier die Verbindungsgeschwindigkeit ermittelt (so noch
nicht bei einem vorherigen Aufruf geschehen) und eine "Fertig"-Alert-Box
gezeigt.
magicXL() soll bei einer Änderung der Fenstergröße
ausgeführt werden (was allerdings erst speziell durch ein Script veranlaßt
werden muß), also nachdem die Seite bereits vollständig angezeigt wird,
z.B. um Seitenelemente an die veränderte Fenstergröße anzupassen, oder
einfach um Darstellungs- oder sonstige Fehler in einigen Browsern zu vermeiden.
In der Testseite wird hier eine "Änderungs"-Alert-Box gezeigt
- die Seitenaktualisierung selbst wird von der internen
Systemvariablen-Funktion
winResize() gestartet (jedenfalls wenn die System-Steuervariable
do_resize zum Zeitpunkt der Größenänderung den Wert true
besitzt), die hier auch dafür sorgt, daß magicXL() überhaupt ausgeführt
wird.
magicKO() schließlich wird beim Verlassen oder Schließen
des Dokumentes aufgerufen, z.B. um die Aufenthaltsdauer des Surfers auf der Seite
festzustellen, oder, bei personalisierten Seiten, geänderte Einstellungen des
Surfers (ggf. nach Rückfrage) zu sichern. In der Testseite wird hier die
eventuell neu ermittelte Verbindungsgeschwindigkeit für die neue Seite gesichert,
und eine "Ende"-Alert-Box gezeigt.
MagicHTML-Testseite (Frameset mit Haupt- & Navigationsframes) MagicHTML-Testseite (Einzelseite mit Beispielfunktionalität)
(HTML-Grundgerüst inkl. eingebauten Systemvariablen
mit Fehler- & IE-Linkrahmen-Unterdrückung sowie "Resize-Aktualisierung")
HTML-Code (für normale Seiten)
HTML-Code (für Seiten mit voller Höhe/Design-Tabelle)
HTML-Code (für Frame-Definitionen)
ZIP-Archiv mit den
reinen Magic-HTML-Seiten, externem JavaScript-Quellcode & Dummy-CSS-Dateien,
sowie der MagicHTML-Testseite (inkl. JavaScript-Quellcode).
Achtung: Schön, wenn man alles zentral mit JavaScript erledigen kann. Aber
man sollte sich als Web-Autor nie darauf verlassen, daß der Surfer
dies auch nutzen kann. Unverzichtbare Bestandteile des Web-Angebotes (dazu
gehört auch immer die Navigation) müssen in reinem HTML-Code vorhanden
sein - wenigstens als (ggf. einfachere) Alternative (dies betrifft natürlich auch
sonstige "Nicht-HTML-Spielereien" wie z.B. Flash oder Java, aber auch Frames).
Die Surfer werden es danken, und Sie auch - schon wegen der Suchmaschinen,
die sich mit Nicht-HTML stets schwertun. Denn was nützen schon Web-Seiten,
auf denen kaum einer surft, weil die Seiten erst gar nicht gefunden werden?
Updates:
29.11.2003:
Änderungen: Die Funktionen wurden umbenannt (script*() zu magic*() - sorry, es paßt einfach besser =;-)), und die prophylaktisch eingefügten Variablen doc_size, doc_Xsize und agt_time wurden ersatzlos gestrichen. Deren geplante Funktionalität hat jetzt in die Systemvariablen Einzug gehalten (wurde auch in die Testseite eingebaut).