lotte-o: Falsche Höhe und Breite nach dem Laden von Images auslesen

Hallo,
beim Laden von mehreren Images in ein Array (Vorlader) wird bei mir  in einer Schleife lediglich die .src in das Array als new image()geschrieben. Anschließend kann ich mittels der [id] des Array auf das Image-Objekt zugreifen und mir die Höhe und die Breite des Images auslesen. Die Images will ich als Background in div-Elementen anzeigen, wobei ich die Größe des div-Elementes anhand der ausgelesenen Werte dimensioniere. So weit so gut, dass klappt bisweilen alles. Allerdings klappt es nur korrekt, wenn sich die Dimensionen des zugrundeliegenden Images nicht ändern. Ersetze ich z. B. ein Image durch ein kleineres Image mit dem selben Dateinamen, dann werden immer die Werte des zuerst unter diesem Namen angezeigten Images ausgelesen. Dem entsprechend erscheint in der Anzeige ein div-Element in der ursprünglichen Größe, jedoch mit einem kleineren Hintergrundbild. Ich habe schon alle temp-Dateien gelöscht und trotzdem bleibt das Phänomen erhalten.
Wer kann mir einen Hinweis zur Ursache geben oder kennt einen Lösungsweg den er mir mitteilen möchte ???

  1. Hi,

    Ersetze ich z. B. ein Image durch ein kleineres Image mit dem selben Dateinamen, dann werden immer die Werte des zuerst unter diesem Namen angezeigten Images ausgelesen.

    gibst du dem Browser denn überhaupt Zeit, das neu angeforderte Bild zu laden? Mit der Zuweisung der neuen URL an <bildobjekt>.src forderst du nämlich erst das neue Bild an. Bis es tatsächlich vom Server geliefert und vom Browser empfangen und interpretiert wird, dauert es ein Weilchen.

    Nutze daher die complete-Eigenschaft des Bildobjekts[1] oder stelle mit einem onload-Handler[2], der ans Bildobjekt gebunden wird, den Abschluss des Ladevorgangs fest. Wenn du _dann_ auf width oder height zugreifst, bekommst du auch plausible Werte.

    [1][2] Leider haben diese Methoden auch ihre Tücken. Die complete-Eigenschaft gibt anscheinend nicht immer zuverlässig Auskunft, und ein onload-Handler feuert AFAIK im IE nicht, wenn das Bild schon im Cache ist und von da geholt wird.

    Ich hoffe, das hilft dir trotzdem ein Stück weiter.

    So long,
     Martin

    --
    Die meisten Menschen werden früher oder später durch Computer ersetzt.
    Für manche würde aber auch schon ein einfacher Taschenrechner genügen.