Der IE ist zu schnell! Verzögerung???
Thomas
- javascript
Hi!
Ich schreibe gerade an einem Script, daß u.a. eine schnelle Folge mehrere Grafiken
an festen Positionen wechseln läßt.
Beim NC klappt das hervorragend - beim IE tut sich gar nichts.
Die Kernzeile meines Bilderwechsel lautet...
if (nav==1) {document.spiel.document.images[nr].src=datei;}
else {document.images[nr].src=datei;}
(nav=1 ist für Netscape, "else" für den IE)
Wenn ich nun nach der Schlußklammer einen banalen "alert()"-Befehl einfüge und das
Ganze starte, sehe ich, daß der IE Schritt für Schritt alles korrekt anzeigt. Ohne diese
Verzögerung mit "alert()" tut sich jedoch nichts.
Mir scheint, hier läuft irgendetwas zu schnell - oder besser gesagt, so schnell, daß der IE gleich gar keine Wechselbilder mehr anzeigt (also ein Timingproblem!?)
Ich habe schon versucht mit einem "window.setTimeout('irgendwas()','250');" das Ganze zu bremsen - war jedoch zwecklos.
Wie kann ich den IE dazu veranlassen diese Grafiken anzuzeigen?
Wiegesagt - beim NC funktioniert es genauso wie es soll.
Vielen Dank,
Thomas
Hi Thomas,
ich vermute dass du in einer Schleife das readyState property abfragen musst, bis es completed zurückliefert.
Der Download ist beim IE ein asynchroner Vorgang, er läuft in einem seperaten Thread. In deinem Bildwechsel stösst du jetzt den Ladevorgang an durch das Austauschen des Bildes, der IE startet den neuen Thread, und macht im ersten gleich weiter. Um die beiden Threads zu synchronisieren solltest du nach dem Anstossen des Bildwechsels eine Leerschleife einbauen, und als Abbruch-Bedingung readyState des image-Objektes auf "loaded" oder "complete" abfragen. Ich weiss nicht welches von beiden, die Doku ist da etwas zweideutig.
Hier die Strings, die readyState zurückliefert, und die Erläuterung:
uninitialized - Object is not initialized with data.
loading - Object is loading its data.
loaded - Object has finished loading its data.
interactive - User can interact with the object even though it is not fully loaded.
complete - Object is completely initialized.
Ich habe es jetzt nicht ausprobiert, aber es müsste gehen.
Gruß,
Martin