Image-Objekt
Ab Version 4 wird das Image-Objekt unterstützt. Es kann auf folgende Weise referenziert werden: Die erste Methode verlangt eindeutige, einprägsame Namen, die im img-Tag mit name="name" zugewiesen werden. Zweite Methode kann verwendet werden, wenn auch zum Beispiel auch document.forms[gleichername] existiert.
Auf das Feld src des Image-Objekt hat man Lese- und Schreibzugriff: document.grafikname.src = "xxx.gif" Beim Austauschen von Bildern solle jedoch darauf geachtet werden, dass Bilder durch gleichgroße Grafiken ersetzt werden, sonst müssen auch die Felder width und height verändert werden. Verwenden des Image-Objekts unter Berücksichtigung älterer Browser.
Methode a) <SCRIPT LANGUAGE="JavaScript"> <SCRIPT LANGUAGE="JavaScript1.1"> Methode b) Einfacher ist es innerhalb der Funktion abzufragen, ob das Objekt unterstützt wird. if (document.images)
Das Image-Objekt wird in der Regel durch mouseover angesprochen. mouseover und mouseout unterstützt nur der IE im Image Tag. Also muß für alle anderen Browser ein A href mit # um das Bild gesetzt werden um die Handler verwenden zu können. (siehe Beispiel 17)
Das folgende Beispiel 17 tauscht Bilder beim überfahren mit der Maus aus (Roll-Over Images).
<HTML> <SCRIPT LANGUAGE="JavaScript">
function over(){
function out(){ //-->
<BODY>
<A HREF="#" onMouseover="over()" onMouseout="out()">
GIF-Bilder können zwar als Animationen gestaltet werden (animated GIF), sind aber auf maximal 256 Fraben beschränkt. Animationen mit JPEG-Bildern lassen sich mit JavaScript verwirklichen.
<HTML> Der Wechsel erfolgt nach Ablauf einer bestimmten Zeit mit der Methode timeout() von window. Dieser Befehl verzögert das Ausführen: window.setTimeout(Befehl, Verzögerung); Die Angabe der Zeitspanne erfolgt in Millisekunden. Besonders bei Roll-Over Effekten ist es störend, wenn das alternative Bild erst dann vom Server geladen wird, wenn der Mauszeiger über das Bild fährt. Bei langsamen Leitungen entsteht dann eine Wartezeit, die den Effekt zerstört. Daher werden auch die Grafiken die noch nicht sofort angezeigt werden bereits im Hintergrund geladen. Beim Roll-Over können sie dann sofort aus dem Speicher heraus angezeit werden. Der Trick besteht im Anlegen eines eigenen neuen Image-Objektes.
var img = new Image() Den Aufruf für die Preload-Routine solle man naicht in den body-Tag schreiben, da der Handler onLoad erst abgearbeitet wird, wenn der Body vollständig abgearbeitet worden ist. Das kann dazu führe das der Benutzer bereits Roll-Over Effekte auslöst, bevor das Preload durchgeführt wurde.
Also sollte der Preload-Aufruf im JavaScript des Head eingefügt werden. Da er ausserhalb einer Funktion steht, wird er bereits beim Interpretieren des Head abgearbeitet.
<HTML> Das Beispiel lässt sich durch das Abfragen der Handler onAbort und onError noch sinnvoll erweitern.
<HTML> |