Jörg Peschke: Image Preload - wann sind die Bilder wirklich da?

Hallo,
Ich hätte mal eine Frage zu dem Image-Prerload mittels

var bild = new Image;
bild.src ="bla.gif";
document.images[0] = bild.src

Und zwar: Kann ich sicher sein, dass beim Ausführen von
document.images[0] = bild.src

(also beim tatsächlichen austauschen der Source des Urbildes)
das Image komplett geladen wurde?

Anders ausgedrückt, blockiert die Zuweisung von "bild.src =..." so lange das Ausführen weiteren JavaScript-Codes, bis das Bild vollständig ist?
Wenn ja, was passiert mit window.timeout/window.interval, die in das Bild-Laden dazwischenfunken?

Wenn nein, gibt es eine Möglichkeit, zu überprüfen, ob das Bild da ist? (image.complete machen ja manche Browser nicht ganz korrekt, oder?)

Freue mich über jede Art von Antwort,
Viele Grüße,

Jörg

  1. Sup!

    Nein... wenn images.complete nicht richtig funktioniert, dann kannst Du absolut nicht sicher sein, ob die Bilder alle da sind.
    Die Auführung von JS wird nicht unterbrochen während geladen wird, soweit ich weiss... ggf. mal im Archiv nachsehen ;-)

    Gruesse,

    Bio

    --
    Keep your friends close, but your enemies closer!
  2. Ich hätte mal eine Frage zu dem Image-Prerload mittels

    var bild = new Image;
    bild.src ="bla.gif";
    document.images[0] = bild.src

    Das ist Unsinn.

    Und zwar: Kann ich sicher sein, dass beim Ausführen von
    document.images[0] = bild.src

    (also beim tatsächlichen austauschen der Source des Urbildes)
    das Image komplett geladen wurde?

    Nein.

    Anders ausgedrückt, blockiert die Zuweisung von "bild.src =..." so lange das Ausführen weiteren JavaScript-Codes, bis das Bild vollständig ist?

    Nein.

    Wenn nein, gibt es eine Möglichkeit, zu überprüfen, ob das Bild da ist? (image.complete machen ja manche Browser nicht ganz korrekt, oder?)

    onload.

    var bild = new Image;
    bild.onload = function()
    {
    alert(this.src + ' ist fertig');
    };
    bild.src ="bla.gif";

    Freue mich über jede Art von Antwort,
    Viele Grüße,

    Jörg

    Struppi.

    1. Aha...onLoad geht auch bei Image-Objekten? Cool. Dankeschön!

      Jörg

      1. Aha...onLoad geht auch bei Image-Objekten? Cool. Dankeschön!

        nein. onLoad nicht. Nur onload

        Struppi.

      2. Hi,

        Aha...onLoad geht auch bei Image-Objekten? Cool. Dankeschön!

        Nicht bei allen Browsern. Schlechtestensfalls hängt der Surfer in einer Endlosschleife ...

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
        1. Aha...onLoad geht auch bei Image-Objekten? Cool. Dankeschön!

          Nicht bei allen Browsern. Schlechtestensfalls hängt der Surfer in einer Endlosschleife ...

          In welchen Browsern nicht?

          Und wenn es nicht geht, wie soll dann eine Endlosschleife erzeugt werden?

          Struppi.

          1. Hi,

            In welchen Browsern nicht?

            Gute Frage, ich wußte es mal ... =%-)

            Such mal im Archiv - AFAIR hatte die Navigatoren so einige Zicken.

            Und wenn es nicht geht, wie soll dann eine Endlosschleife erzeugt werden?

            Wenn man auf onload wartet und es kommt nicht?

            Gruß, Cybaer

            --
            Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
            1. In welchen Browsern nicht?

              Gute Frage, ich wußte es mal ... =%-)

              Such mal im Archiv - AFAIR hatte die Navigatoren so einige Zicken.

              also im Netscape 3 gibt's damit keine Probleme.

              Und wenn es nicht geht, wie soll dann eine Endlosschleife erzeugt werden?

              Wenn man auf onload wartet und es kommt nicht?

              Wenn der Broswer das Event nicht kennt, kann er doch auch nicht warten?

              Das ist ja der Vorteil der onload Methode gegenüber dem üblichen timout und complete geraffel. I.d.R. wird dort keine Abbruch bedingung genannt und wenn dann mal ein Server nicht erreichbar ist, ist die endlos Schleife perfekt. Während man dieses Szenario Prima mit onload/onerror Abfangen kann.

              Aber es stimmt, soweit ich weiß, ist dieses Event nicht in den offziellen Dokumenten.

              Struppi.

              1. Hi,

                also im Netscape 3 gibt's damit keine Probleme.

                Wenn hier einer Probleme macht, ist es meistens einer der 4er ... =;-)

                Der 3er hatte AFAIR diesbezügl. "nur" diesen "Ich würfle Images in verschachtelten Tabellen durcheinander"-Bug. :)

                Wenn man auf onload wartet und es kommt nicht?
                Wenn der Broswer das Event nicht kennt, kann er doch auch nicht warten?

                Das kommt ja wohl darauf an, wie man programmiert.

                Zählt man z.B. die Variable picsLoaded hoch, und wartet man darauf, daß picsLoaded den erwarteten Wert erreicht, um dann das zu tun, was man tun will, dann kann man ggf. ziemlich lange warten ... =8-)

                Oder man leitet mit der Routine weiter, die vom onload angesprungen wird (falls es sich nur um eine Grafik handelt). Ist dann auch nicht so prickelnd. ;)

                Ich würde, wenn man sich denn wirklich vom "Vorhandensein" abhängig machen möchte, wohl die Bilder mit "visibility:hidden"-1x1-IMGs preloaden.

                Gruß, Cybaer

                --
                Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!