stefan: Bilddimensionen nach Preload auslesen

Hallo,
ich möchte ein Bild via Javascript preloaden und im gleien Zuge die Dimensionen wissen. Ein Versuch mit diesem Code

testbild = new Image();
testbild.src = "http://....";
alert(testbild.width);

klappt nur beim Internet-Explorer, nicht aber bei Mozilla/Firefox.

Gibt es evtl. eine Möglichkeit die Bilddimensionen serverseitig im Header mitzusenden (à la 'Content-Type: image/png', image-heigth: 30)?
Viele Grüße,
Stefan

  1. hi,

    ich möchte ein Bild via Javascript preloaden und im gleien Zuge die Dimensionen wissen.

    Zu welchem Zweck?

    Ein Versuch mit diesem Code

    testbild = new Image();
    testbild.src = "http://....";
    alert(testbild.width);

    klappt nur beim Internet-Explorer, nicht aber bei Mozilla/Firefox.

    Du solltest nicht erwarten, dass ein Browser mit der nächsten Javascript-Anweisung wartet, bis das Bild fertig geladen wurde.

    onload/onerror für das Bildobjekt sind da das erfolgversprechendere Gespann, siehe u.a. http://forum.de.selfhtml.org/archiv/2006/6/t131420/
    oncomplete kommt ggf. noch hinzu, da der IE bei bereits gecachten Bildern kein onload mehr feuert.

    Gibt es evtl. eine Möglichkeit die Bilddimensionen serverseitig im Header mitzusenden (à la 'Content-Type: image/png', image-heigth: 30)?

    Beliebige eigendefinierte HTTP-Header kannst du mitsenden, wenn du ihre Namen wie es die Konvention vorgibt mit "X-" beginnen lässt.
    Aber das nützt dir wenig, denn da kommst du mit Javascript nicht heran.
    Lediglich mittels AJAX könntest du die HTTP-Responseheader auswerten - aber AJAX taugt nicht zum Laden von Bilddaten.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Danke für die schnelle Antwort. Die Lösung war wirklich das Triggern der Abfrage auf 'onLoad'!

      Das ganze benötige für eine relativ umständliche Lösung, um Iframes dynamisch in der Höhe zu variieren.

      Ich habe es nämlich nicht geschaft, irgendeine Kommunikation zwischen Iframe-Javascript und Elternfenster-Javascript herzustellen, so daß ich nach dem Laden des Iframes ein php-generiertes Bild vorlade welches die Höhe des Iframes hat und dieser dann nachträglich in der Höhe verändert wird.

      1. hi,

        Das ganze benötige für eine relativ umständliche Lösung, um Iframes dynamisch in der Höhe zu variieren.

        Ich habe es nämlich nicht geschaft, irgendeine Kommunikation zwischen Iframe-Javascript und Elternfenster-Javascript herzustellen, so daß ich nach dem Laden des Iframes ein php-generiertes Bild vorlade welches die Höhe des Iframes hat und dieser dann nachträglich in der Höhe verändert wird.

        Was wird denn im Iframe angezeigt, und woher weiss "das Bild", wie hoch das ist?

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hallo,

          Was wird denn im Iframe angezeigt, und woher weiss "das Bild", wie hoch das ist?

          Es handelt sich hier um ein sessionbasiertes Mini-Warenkorbsystem, welches auf einem anderen Server liegt. Da ich aber pro Item weiß, wieviel Platz das ganze einnimmt, kann ich die Höhe leicht berechnen, da es sich beim Preload ja um die gleiche Session handelt.

          Gruß,
          Stefan

          1. hi,

            Es handelt sich hier um ein sessionbasiertes Mini-Warenkorbsystem, welches auf einem anderen Server liegt. Da ich aber pro Item weiß, wieviel Platz das ganze einnimmt, kann ich die Höhe leicht berechnen

            Es handelt sich also um reine Bilddaten, kein Fliesstext?

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Hallo,

              Es handelt sich also um reine Bilddaten, kein Fliesstext?

              Nein, im Iframe stehen schon Text und Bilddaten, die aber per PHP und CSS so zurechtgestutzt sind, das pro Eintrag wirklich eine fixe Höhe angenommen werden kann. Sonst würde die Idee mit dem Preload-Bild nicht funktionieren.

              Gruß,
              Stefan

              1. hi,

                Nein, im Iframe stehen schon Text und Bilddaten, die aber per PHP und CSS so zurechtgestutzt sind, das pro Eintrag wirklich eine fixe Höhe angenommen werden kann.

                Also hast du eine max-height angegeben und overflow:hidden?

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }