LiveSucks: Grosses HTML-Elaborat in kleine Dateien aufsplitten

Beitrag lesen

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:

  • Der obere Frame zeigt die jew. Kapitelüberschrift an, die zu der
      gerade betrachteten Unterdatei gehört. So weiss man, was man grade
      liest. Der Inhalt dieses Frames wird über ein Java-Script (s.u.)
      "on-the-fly" erzeugt.
  • Der mittlere Frame zeigt die gesplitteten kleineren Unterdateien
      an.
  • Der untere Frame zeigt eine Navigationsleiste mit drei Buttons an,
      mit denen man die Möglichkeit hat, ins vorhergehende Kapitel
      (vorhergehende Unterdatei), oder zum Inhaltsverzeichnis (eine
      bestimmte Unterdatei) oder zum nächsten Kapitel (nächste
      Unterdatei) zu wechseln.
      Sieht etwa so aus:    [ < ]   [Inhalt]   [ > ]
      Diese Navigationsleiste ist in einer eigenen HTML-Datei definiert.

(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