image.onload funktioniert nicht im ie?

philomatique

Grünschnabel
Hallo,

ganz kurz die Ausgangssituation:

Per Ajax-Updater wird ein Container mit neuem Inhalt gefüllt. Dieser ist eine kleine Galerie. Die Bilder sollen erst angezeigt werden, wenn auch das letzte vollständig geladen ist. Die Ebene wird mittels einem Layer überdeckt, das zum Schluss ausgeblendet wird. Soweit ganz gut. Jetzt habe ich ein JS gebastelt, dass die einzelnen Bilder vorlädt. Das funktioniert super im Firefox und im Safari aufm MAC und einigermaßen im Firefox unter Windows (da er die Ebene ausblendet, bevor alle Bilder vollständig angezeigt - aber dennoch komplett geladen sind). Das große Problem ist jedoch der IE6... Er sagt nämlich, sobald er das zweite Bild erreicht: Fehler: "nicht implementiert". Und ich weiß nicht woran es liegt. Hier ein Codeausschnitt:

Code:
myPicture = new Image();
myPicture.src = "path" +"1.jpg";	
myPicture.onload = changePicture(1,myPicture);
				
myPicture1 = new Image();
myPicture1.src = "path" +"2.jpg";	
myPicture1.onload = changePicture(2,myPicture1);

function changePicture(index,picture) {
			
	document.getElementById("picture_"+index).src = picture.src;
			
	++myCounter;
			
	if (myCounter == 2) Effect.Fade('loading', { "duration" : 0.9 } );

}

Habt Ihr eine Idee, woran es liegen könnte? Wenn ich nur ein Bild habe, macht es der IE auch korrekt, nur bei mehreren streikt er.

Danke und Grüße
Phil
 
Zuletzt bearbeitet:
Der Fehler liegt in der Eventüberwachung, die Syntax dort ist falsch.
Code:
myPicture1.onload = changePicture(2,myPicture1);
...die Funktion changePicture() wird auf diese Weise nicht erst beim onLoad aufgerufen, sondern sofort, wenn diese Skriptpassage vom Browser gelesen wird.

Korrekt sollte es so lauten:

Code:
myPicture1.onload = function(){changePicture(2,myPicture1);}
 
Hi Sven,

danke für Deine Antwort. Das hatte ich auch schon probiert. Allerdings nicht, indem ich den Funktionsaufruf sondern den kompletten Inhalt in die "neue" Funktion gepackt habe. Das werde ich gleich nochmal probieren. Sehr gute Idee.

Danke und viele Grüße
Phil
 

Neue Beiträge

Zurück