Cheatah: Frames in bestimmter Reihenfolge laden?

Beitrag lesen

Hi,

ich habe auf meiner Homepage zwei Frames (Navigation links, Hauptframe rechts). Beim normalen Aufruf werden die Seiten geladen und nach 5 Sekunden im Hauptframe von der Startseite auf eine andere "umgeblättert". Mein Problem besteht derzeit darin, daß die Seite schon oft umblättert bevor überhaupt das Navigationsframe ganz geladen ist.

die Ladereihenfolge kannst Du nicht beeinflussen. Der Browser lädt das nächstbeste, was gerade anliegt - und die Übertragungszeiten können nun mal sehr variieren.

Daher meine Frage: Gibt es eine Möglichkeit um festzulegen, daß erst nach dem gesamten Ladevorgang umgeblättert wird?

Du kannst im Hauptframe onLoad eine Variable setzen:
<body onLoad="seite='geladen';">

Im Navigationsframe erstellst Du dann folgende Funktionen:
function ladezustand() {
  if (parent.Hauptframe.seite) if (parent.Hauptframe.seite == 'geladen') {
    window.setTimeout("parent.Hauptframe.location.href='xyz';", 5000);
  } else {
    window.setTimeout("ladezustand();", 1000);
  }
}
ladezustand(); // der erste Aufruf muß auch sein :-) kann aber ggf. auch onLoad im Navigationsframe passieren

Es wird jetzt jede Sekunde geprüft, ob a) die Variable "seite" im Hauptframe vorhanden ist (wichtig um Fehler zu vermeiden!), und ob b) der Inhalt dieser "geladen" lautet. Ist dies der Fall, wird ein 5-Sekunden-Countdown gestartet, der die Seite im Hauptframe in "xyz" ändert.

Sicherheitshalber (falls der Navigationsframe für sich, also ohne Frameset geladen wird) kannst Du vor die if-Zeile noch ein "if (parent.Hauptframe)" setzen. Da in dem Fall aber die ganze Abfragerei nichts bringt, kannst Du an der Stelle auch einfach einen Fehler in Kauf nehmen. Vielleicht setzt Du ja noch window.onerror=top.location.href='http://deine.homepage.de'; ;-)

Cheatah