Julian Hofmann: Frames in bestimmter Reihenfolge laden?

Hallo,

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.
Daher meine Frage: Gibt es eine Möglichkeit um festzulegen, daß erst nach dem gesamten Ladevorgang umgeblättert wird?

Vielen Dank schon jetzt für Eure Hilfe.

Gruß
JUlian

  1. 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

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

    Ich weiß nicht, ob's im NN auch geht (müßte aber), aber im IE kannst Du dich in das onLoad-Event des Navifgator-Frames einklinken und von dort aus den Inhalt des Main-Frames ändern.
    onLoad wird getriggert, wenn die gesammte Seite geladen ist.
    siehe
    <../../tebj.htm#a14>
    http://developer.netscape.com/docs/manuals/js/client/jsref/handlers.htm
    http://msdn.microsoft.com/workshop/author/dhtml/reference/events.asp#om40_event
    das sollte helfen

    CirTap