Javascript zeitverzögert ausführen ?
Wolfgang Fischer
- javascript
Zunächst sollte ich vorausschicken, dass ich in Sachen Javascript Anfänger bin. Nun zu meinem Problem:
Habe eine Seite mit 3 Frames. Im Hauptframe ist das Javascript für einen sich öffnenden Vorhang implementiert. Dieser soll sich jedoch erst öffnen, wenn alle Frames komplett geladen sind (ca. 30 Sek.).
So weit ich bisher durchgestiegen bin, muss sich diese Zeitverzögerung wohl mit "setTimeout" irgendwie bewerkstelligen lassen ?
Wäre schön, wenn mir jemand helfen könnte
Bis (hoffentlich) bald
Wolfgang
Zunächst sollte ich vorausschicken, dass ich in Sachen Javascript Anfänger bin. Nun zu meinem Problem:
Habe eine Seite mit 3 Frames. Im Hauptframe ist das Javascript für einen sich öffnenden Vorhang implementiert. Dieser soll sich jedoch erst öffnen, wenn alle Frames komplett geladen sind (ca. 30 Sek.).
So weit ich bisher durchgestiegen bin, muss sich diese Zeitverzögerung wohl mit "setTimeout" irgendwie bewerkstelligen lassen ?
probier mal http://www.teamone.de/selfhtml/tecb.htm#a45.
hoffe da hilft...
Nils
Hallo Wolfgang,
es ist gut, wenn Du Deine Javascript-Kenntnisse selbstkritisch einschätzt; schließlich waren wir alle mal Anfänger. ;)
Aber zur Sache.
Zunächst sollte ich vorausschicken, dass ich in Sachen Javascript Anfänger bin. Nun zu meinem Problem:
[...] Dieser soll sich jedoch erst öffnen, wenn alle Frames komplett geladen sind (ca. 30 Sek.).
[...] mit "setTimeout" irgendwie bewerkstelligen lassen?
Natürlich ist das mit setTimeout() zu machen - das ist aber nur die zweitbeste Lösung, weil Du nicht vorhersehen kannst, wie lange das Laden der restlichen Frames wirklich dauert.
Besser ist es, wenn die anderen Frames "Bescheid sagen". Ich will Dir das an einem Beispiel verdeutlichen.
----------------
* Frameset:
<HEAD>
... was hier halt so hingehört ;)
</HEAD>
<SCRIPT LANGUAGE="javascript">
var Frame1Ready = 0;
var Frame2Ready = 0;
</SCRIPT>
<FRAMESET>
...
</FRAMESET>
----------------
* Frame 1 (z.B. Werbebanner):
...
<BODY ONLOAD="parent.Frame1Ready=1">
----------------
* Frame 2 (z.B. Navigation):
...
<BODY ONLOAD="parent.Frame2Ready=1">
----------------
* Hauptframe:
...
<SCRIPT LANGUAGE="javascript">
function Init()
{ if (Frame1Ready && Frame2Ready) // sind die Frames schon geladen?
{ // mach hier Deine eigentliche Initialisierung mit dem "Vorhang"
}
else
{ window.setTimeout("Init()", 1000); // schau in einer Sekunde nochmal nach...
}
}
</SCRIPT>
...
<BODY ONLOAD="Init()">
...
Hoffe, Du kannst mit diesem Vorschlag was anfangen.
Gruß,
Martin
Hallo,
hier noch ein Nachschlag - ich werd' halt auch langsam alt... *g*
Und wenn ich schon "Musterlösungen" vorschlage, dann sollten sie wenigstens richtig sein. Also, eine Zeile aus meinem Lösungsvorschlag ist zu korrigieren:
FALSCH:
{ if (Frame1Ready && Frame2Ready) // sind die Frames schon geladen?
RICHTIG:
{ if (parent.Frame1Ready && parent.Frame2Ready) // sind die Frames schon geladen?
Der Bezug auf "parent" ist hier natürlich wichtig, da ich die Indikator-Variablen "ganz oben" im Frameset definiert habe.
So long,
Martin