Ladezustand
Thomas
- javascript
nabend.
Auf meiner Seite öffnet sich in der Kategorie Malerei nach Anklicken eines Vorschaubildes ein Fenster zum Navigieren der Bildfolgen. Dabei wird jeweils das nächstfolgende Bild mittels "onLoad" im Body-Tag und einer preload-Funktion vorgeladen. Wenn der Besucher allerdings vor Abschluß des für ihn unsichtbaren/unhörbaren Ladevorgangs zum nächsten Bild weiterspringt (um die Fenstergröße voll auszunutzen, verzichte ich auf die Statusanzeige), bekommt er u.U. nur ein halbes oder ein unscharfes Bild geliefert. Daher würde ich gern auf den Abschluß des Ladevorgangs aufmerksam machen. Leider klappt dies nicht mit dem image-Objekt (complete), da das Folgebild ja nicht auf die aktuelle Seite geladen, sondern lediglich für die nächste im Speicher verfügbar sein soll.
Als etwas "unsaubere" Lösung habe ich bisher nur folgendes umgesetzt:
Ein zweites (im nicht sichtbaren Teil des Frames positioniertes) Bild wird in 1Pixel-Größe angelegt, in das ich das neue, vorzuladende Bild mit "document.images[1].src= Bild.jpg" einfüge, um anschließend den Ladezustand in einer sich selbst aufrufenden Funktion (setTimeout) mit "document.images[1].complete ==false/true" abfragen zu können. Das läuft sehr gut, nur stört mich diese Behelfskonstruktion, die mich als noch etwas unerfahrenen JS-Fan ahnen läßt, daß es auch professionellere Lösungen gibt. Rätsel gibt mir allerdings auch Netscape auf, der auf eine "complete==true"-Abfrage überhaupt nicht reagiert. Weiß jemand Rat?
Danke.
Thomas
hi,
neben der prop complete, die bei einigen NC Versionen buggy ist, hast Du die moeglichkeit, mit onload im _img_ tag zu arbeiten. So kannst Du eine beliebige Funktion aufrufen, sobald das Bild geladen ist.
Man kann z. B. in einem versteckten Div-Layer dynamisch ein Bild schreiben, das per onload erneut die funktion aufruft, die dynamisch das naechste Bild in den Layer schreibt, so das nun dieses geladen wird, usw.
Hoffe das hilft Dir weiter
Gruesse Joachim
hi,
neben der prop complete, die bei einigen NC Versionen buggy ist, hast Du die moeglichkeit, mit onload im _img_ tag zu arbeiten. So kannst Du eine beliebige Funktion aufrufen, sobald das Bild geladen ist.
Man kann z. B. in einem versteckten Div-Layer dynamisch ein Bild schreiben, das per onload erneut die funktion aufruft, die dynamisch das naechste Bild in den Layer schreibt, so das nun dieses geladen wird, usw.
Hoffe das hilft Dir weiter
Gruesse Joachim
Hallo Joachim.
Das hilft mir weiter, ist schon umgesetzt und macht keine Fallunterscheidung mehr zwischen NS und IE nötig. Schön, daß es noch so einfache Lösungen gibt! Vor allem aber wußte ich nicht, daß der"onLoad" Handler auch im image-Tag erlaubt ist (Bei selfhtml steht das nicht!), der auch bei einem Bildwechsel ("document.images[0].src=neues_Bild") zuverlässig arbeitet.
Noch was:
In demselben Fenster gibt es ein Grauverlauf-Bild, für das eine ImageMap, die im Pixelabstand einen zugehörigen Grauwert für die Hintergrundfarbe aufruft, definiert ist. Jedes dafür definierte Rechteck enthält zusätzlich den MSIE-typischen onMousemove-Handler, der bei gedrückter Alt-Taste beim Überfahren des Grauverlauf-Bildes einen gleitenden Hintergrundwechsel ermöglicht. Ein netter Effekt, den ich auch für Netscape nutzbar machen würde. Aber wie?
Grüße
Thomas
hi again,
In demselben Fenster gibt es ein Grauverlauf-Bild, für das eine ImageMap, die im Pixelabstand einen zugehörigen Grauwert für die Hintergrundfarbe aufruft, definiert ist. Jedes dafür definierte Rechteck enthält zusätzlich den MSIE-typischen onMousemove-Handler, der bei gedrückter Alt-Taste beim Überfahren des Grauverlauf-Bildes einen gleitenden Hintergrundwechsel ermöglicht. Ein netter Effekt, den ich auch für Netscape nutzbar machen würde. Aber wie?
habe leider grad nicht so viel Zeit, da schon mal nachgelesen?
<../../tecbc.htm#a6>
hth
Gruesse Joachim