Grosses HTML-Elaborat in kleine Dateien aufsplitten
LiveSucks
- html
Hallo an alle Forumleser !
Ich habe ein langes Elaborat in HTML verfasst. Eigentlich handelt es
sich dabei um Kursunterlagen, welche ich selbst verfasst habe und
für die Teilnehmer ins Internet stellen will.
Zur Zeit ist alles noch in einer grossen Datei. Wenn man das aus dem
Internet lädt, dauert das sehr lange. Deshalb möchte ich die
einzelnen Kapitel und Untersektionen des Elaborates in eigene
kleinere Dateien aufsplitten, die man über einen Index erreichen
kann und die nur nach Bedarf geladen werden.
Bisher habe ich das Problem unter Einsatz von JavaScript und Frames
wie folgt gelöst (allerdings kommt mir das ganze noch "klobig" und
unelegant vor und ich möchte wissen, wie man es besser machen kann/
wie man sowas normalerweise macht) :
Neben den kleineren Unterdateien, in welche ich das grosse Elaborat
aufgesplittet habe, gibt es eine Hauptseite, welche für die Anzeige
der Unterdateien ein Frameset aus drei übereinander angeordneten
Frames definiert. Die einzelnen Frames haben folgende Funktionen:
(Alternativ statt der Frames, wenn der Browser sie nicht anzeigen
kann, wird man über einen Hyperlink auf die grosse, unzerteilte
Version des Elaborates verwiesen und ärgert sich über lange
Download-Zeiten.)
Gesteuert werden die beiden oberen Frames über ein kleines Java-
Skript, welches ich in die Datei für den unteren, also den
Navigationsframe, eingebaut habe, weil das die einzige Datei ist,
die ständig geladen bleibt.
Das Skript ist wie folgt aufgebaut:
a) Ein Zähler wurde deklariert, dessen Wert immer anzeigt, welche
Unterdatei gerade in den mittleren Frame geladen ist.
Dies wird bewerkstelligt, indem jeder Unterdatei eine Nummer so
zugeordnet wurde, dass alle Unterdateien fortlaufend nummeriert
sind, wenn man sie in der Reihe anordnet, in der die Kapitel die
sie jew. beinhalten, aufeinanderfolgen. Immer wenn eine andere
Unterdatei in den mittleren Frame geladen wird, wird gleichzeitig
auch der Wert des Zählers auf die Nummer gesetzt, die dieser
Unterdatei zugeordnet wurde.
b) Es gibt eine Funktion, die abhängig von Wert des Zählers eine
Kapitelüberschrift in den oberen Frame hineinschreibt.
c) Es gibt eine Funktion, die abhängig von Wert des Zählers
diejenige Unterdatei in den mittleren Frame lädt, deren Nummer
dem Wert des Zählers entspricht.
Prinzipiell gibt es zwei Fälle, wie es dazu kommen kann/soll, dass
eine andere Unterdatei in den mittleren Frame geladen wird.
In beiden Fällen muss
a) der Zähler adäquat neu gesetzt werden,
b) die Kapitelüberschrift in Abhängigkeit des Zählerwertes mit der
hierfür vorgesehenen Funktion neu in den oberen Frame geschrieben
werden
c) diejenige Unterdatei in den mittleren Frame geladen werden, die
dem Zählerwert zugeordnet ist
Erster Fall: In der Navigationsleiste im unteren Frame wird eine der
drei Buttons angeklickt
Der Eventhandler onClick wird in diesem Fall eingesetzt, um die
folgenden drei Aktionen auszulösen:
zu a) Je nachdem, welchen Button der Navigationsleiste man anklickt,
wird der Zähler (sofern nicht schon das erste Kapitel
angezeigt wird) entweder um 1 runtergesetzt, oder auf die
Nummer des Inhaltsverzeichnisses gesetzt, oder (sofern nicht
schon das letzte Kapitel angezeigt wird)um 1 hochgesetzt. Der
Zähler bleibt deshalb adäquat, weil - wie oben erwähnt - die
Unterdateien entsprechend der Kapitelabfolge fortlaufend
nummeriert wurden.
zu b) Aufruf der hierfür vorgesehenen Funktion des Skriptes.
zu c) Aufruf der hierfür vorgesehenen Funktion des Skriptes.
Zweiter Fall: Ein Hyperlink im Text, der im mittleren Frame
angezeigt wurde, wurde angeklickt, worauf eine neue
Unterdatei in diesen Frame geladen wird
zu a) über den Eventhandler onClick wird der Wert des Zählers auf
diejenige Nummer gesetzt, die der Unterdatei zugeordnet ist,
auf die der Hyperlink verweist(, sofern das Frame-Objekt
gefunden wird, in welchem der Zähler/das Script definiert
wurde²).
zu b) über den Eventhandler onClick Aufruf der hierfür vorgesehenen
Funktion des Skriptes(, sofern das Frame-Objekt gefunden wird,
in welchem die Funktion/das Script definiert wurde²).
zu c) erledigt sich von selbst bzw. über den Browser, ohne Java.
² ",sofern..." deshalb, damit es keine Fehlermeldung gibt, wenn man
die Unterdatei im Browser für sich betrachtet, also ausserhalb
des Framesets.
Wie notiert man eine "Alternativnavigation" in den einzelnen
Kapiteldateien ?
Ich denke dabei an eine Textzeile am jew. Dateiende/Dateikopf, die
drei HyperLinks enthält (einen zum letzten Kapitel, einen zum
Inhaltsverzeichnis, einen zum nächsten Kapitel) und die nur
angezeigt wird, wenn es kein Java und/oder keine Frames gibt ?
So, jetzt habt Ihr Euch bestimmt schon 'nen "Wolf" gelesen.
Bedanke mich für die erhaltene Aufmerksamkeit, freue mich
prophylaktisch schon mal auf Antworten sowie Vorschläge, wie man es
besser machen kann und
verbleibe mit freundlichem Gruss
als
LiveSucks
Hi,
- Der obere Frame zeigt die jew. Kapitelüberschrift an,
die kann auch ganz oben in der Unterdatei stehen. Ob welchen Grundes ist es IYHO nötig, die Überschrift ständig sichtbar zu haben? Sind Deine User so vergesslich? ;-)
- Der untere Frame zeigt eine Navigationsleiste mit drei Buttons an,
Auch diese kann in der Unterdatei stehen. Idealerweise einmal ganz unten (wenn man fertig ist mit Lesen) _und_ ganz oben (wenn man durchblättert). Ist ja nicht viel Code.
So, jetzt habt Ihr Euch bestimmt schon 'nen "Wolf" gelesen.
Ich gebe beschämt zu, ich habe nicht alles gelesen. Allerdings sehe ich bei Dir nicht den geringsten Nutzen eines Framesets oder von einer JavaScript-Abhängigkeit, wo der gleiche Effekt mit simplen und üblichen Mitteln erzielt werden kann.
Cheatah
Hallo Cheatah,
Auch diese kann in der Unterdatei stehen. Idealerweise einmal ganz unten (wenn man fertig ist mit Lesen) _und_ ganz oben (wenn man durchblättert). Ist ja nicht viel Code.
http://selfhtml.teamone.de/html/kopfdaten/beziehungen.htm#quellen wäre vielleicht noch erwähneswert.
Der aktuelle Mozilla unterstützt das (Ansicht->Anzeigen/Verstecken->Site-Navigationsleiste) und ich glaube auch der aktuelle Opera kann es.
Damit gibt es für Mozilla und Opera-Benutzer noch mal ein bisschen mehr Komfort. Und andere Browser ignorieren es einfach, daher spricht nichts dagegen, es einzusetzen.
Viele Grüße,
Christian