Bilder zeitgesteuert austauschen - Beispiel für JavaScript-Programmierung | ||||
![]() ![]() ![]() | ||||
| ||||
![]() ![]() ![]() ![]() | ||||
HTML-Quelltext im Body-Bereich:
| ||||
![]() ![]() ![]() ![]() | ||||
Script-Quelltext im Head-Bereich: Anstatt des mit jedem Durchlauf wiederkehrenden Aufrufes von setTimeout(...) wäre auch ein einmaliger Aufruf von setInterval(...) denkbar gewesen. Der Abbruch würde dann über clearInterval(...) erfolgen. Die Steuerung mittels Timeouts ist allerdings sicherer und sauberer, vor allem dann, wenn bei jedem Durchgang längere Zeit in der aufzurufenden Funktion verbracht wird. Der erneute Timeout wird im von mir verwendeten Beispiel erst nach kompletter Abarbeitung aller auszuführenden Befehle initialisiert. Der Browser bekommt so immer genug Zeit, alle Befehle der Reihe nach abzuarbeiten. Bei der Verwendung von setInterval(...) kann es dagegen schon mal zu Unordnung kommen. In einigen Browsern sammeln sich unter Umständen noch nicht abgearbeitete Zeitgeberereignisse an, oder der nächste Funktionsaufruf startet, bevor der vorhergehende abgeschlossen wurde. Ich habe das an anderer Stelle exzessiv mit allen möglichen Browsern ausprobiert. Die von mir bevorzugte Verwendung von setTimeout(...) ist damit die "staufreie" und sicherere, wenn auch unter Umständen langsamere Variante. Auf Geschwindigkeit und präzise Zeitsteuerung darf man bei JavaScript jedoch sowieso nie setzen. Außerdem sollte nie mehr als ein Timeout gleichzeitig laufen, mancher Browser bricht ältere Timeouts zugunsten neuer ab, weil er nicht mehr als einen Timeout gleichzeitig bearbeiten kann. Der Konqueror 1.9.8 ist solch ein Kandidat. Irgendwie muß man also manchmal mehrere eigentlich unabhängige Abläufe im Interesse der Kompatibilität unter den Hut einer gemeinsamen Zeitsteuerung bringen. Auch das geht und ist gar nicht so kompliziert. | ||||
![]() ![]() ![]() | ||||
Autor: Ulrich Kritzner |