amolip: Größe (width/height) eines Bildes ermitteln

Beitrag lesen

Hallo Stefan,

ich hatte dazu mal einige Versuche gemacht. Alles ohne Gewähr! Getestet mit FF3 und IE7. Vielleicht kann jemand ergänzen, wie das bei weiteren Browsern aussieht.

Wenn der Ereignis-Handler vor dem Beginn des Ladevorgangs gesetzt wird, dann werden die Ereignisse ausgelöst, unabhängig davon, ob sich das Bild im Cache befindet oder nicht.
Getestet: FF3; IE7

meinBild.onload  = ... Ereignis-Handler
meinBild.onerror  = ... Ereignis-Handler
meinBild.src = ... Ladevorgang

Wenn die Ereignis-Handler nach Beginn des Ladevorgangs gesetzt werden, gibt’s Probleme.

meinBild.src = ... Ladevorgang
meinBild.onload  = ... Ereignis-Handler
meinBild.onerror  = ... Ereignis-Handler

Für IE7 gilt.
Ist das Bild im Cache, wird das onload-Ereignis für dieses Bild nicht ausgelöst.

Für FF3 gilt: Das onload-Ereignis wird ausgelöst - auch wenn sich das Bild im Cache befindet.

Folgendes funktioniert im FF3 und IE7

  
if (meinBild.complete) {  
    bildGeladen(meinBild, "complete");  
} else {  
    meinBild.onload  = function() { bildGeladen(this, "onload"); };  
    meinBild.onerror = function() { bildGeladen(this, "onerror"); };  
};  

FF3 ist in bezug auf »complete« allerdings fehlerhaft.

Wenn ein Bild nicht geladen werden kann, dann ist - erwartungsgemäß - beim ersten Aufruf (leerer Cache; Strg+F5) »complete==false«, »onerror« wird ausgelöst.
Bei einem Refresh (F5) ist - wider Erwarten - bei dem fehlerhaften Bild »complete==true«.

Der IE7 verhält sich hier korrekt.

Gruß Uwe