Newsgroup: it.comp.lang.javascript
Titolo: onload su immagini

Ciao ancora a tutti,
vorrei fare partire un azione al termine del precaricamento di una serie 
  di immagini.
faccio questo:
for (var i=0; i < immagini.length; i++) {
	im_temp_url=immagini[i];
         immagini[i] = new Image(width, height);
         immagini[i].src = im_temp_url;
         immagini[i].onload = num++;
}
in pratica trasformo un array di url in un array di immagini. Questo mi 
sembra fuinzionare, ma ottengo errore (su IE) sull'ultima riga.
Quindi confronto
if (num == immagini.length) {
	//compio le azioni che mi servono
}
Quello di cui avrei bisogno è sapere come risolvo l'errore su IE (mi fa 
impazzire da mane a sera sto browser qui, sigh). Ma sopratutto se la 
lagica che ho utilizzato ha senso, e quindi eventualmente se sapete 
indicarmi un'altra soluzione.
Grazie ancora della pazienza.
-- 
"20060207: buongiorno italia, buongiorno maria.
con gli occhi pieni di malinconia"

 }
prima devi associare l'event handler e poi settare il src.
...ho parlato di event handler e "num++" non lo e'.
Corretto sarebbe invece
immagini[i].onload = function() {num++;}; 

 }
Ora forse ho capito: onload vuoi semplicemente aumentare questo num?
Presupponendo che num sia quindi una var globale:
 immagini[i].onload=function() {num++}
-- 
"Non sai che ci vuol scienza
 ci vuol costanza
 ad invecchiare senza maturità"
									    F.G.

 prima devi associare l'event handler e poi settare il src.
cioè?
immagini[i].onload = function() {num++;};
immagini[i].src = im_temp_url;
in questo ordine?
non ne capisco il senso. ho provato ad adeguarmi ma tutto funziona come 
prima, a parte la restituzione dell'erreore su IE che non c'è + (ma per 
via della function, non dell'ordine).
Insomma, con IE non trova mai che num==immagini.length, mentre con IE lo 
  rileva subito (troppo presto mi pare!)


Magilla ha scritto:
  Insomma, con IE non trova mai che num==immagini.length, mentre con FF! lo


 
corretto, ma rimane il fatto che
con IE num è sempre diverso da immagini.length, mentre con FF num 
diventa uguale a immagini.length troppo presto.
Mah


 non ne capisco il senso
eppure č cosě, altrimenti IE non č detto che scateni l'onload (Se non
ricordo male invece con firefox funziona comunque, ma č un thread che ho
letto tempo fa, non ricordo ... sono perň sicuro per IE). A naso termina il
caricamento *PRIMA* dell'assegnazione dell'onload (e quindi ha senso che
non lo esegue...).
Io nei miei siti (dato che onload come evento nel tag non č accettato da
xhtml 1.1 strict per il tag img) carico l'src nel tag, ma poi window.onload
(dove assegno l'onload e l'onerror alle img) forzo l'src a sč stesso per
poterlo scatenare.
-- 
"Run rabbit run
 dig that hole, forget the sun
 and when at last the work is done
 don't sit down, it's time to dig another one"
									    P.F.

 diventa uguale a immagini.length troppo presto.
se num parte da zero non ne capisco il motivo (quand'è che fai il controllo
"if num"? non lo ho visto dentro la tua onload ...)
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

 
non penso di avere capito. tu fai riferimento al caricamento nel src del 
tag <img> o di un'array di immagini?


 
continuaimo solo qui che sto impazzendo
l'if, come da primo messaggio l'ho messo al termine del for. 
probabilmente è sbagliato, per quello chiedevo anche della logica


 
Ok, ora mi funzia correttamente. Grazie ad entrambi.
Ho messo l'if dentro alla function dell'onload.


 tag <img> o di un'array di immagini?
è irrilevante (nei miei siti lo faccio per le img per nascondere onerror,
ma è la stessa logica).


 non ne capisco il senso.
Quando associ la proprietą src di un oggetto Image, il browser esegue
richiesta http per recuperare tale risorsa.
E' come se tu gli dicessi, con quell'istruzione "ok, adesso fai il
download di quest'immagine".
Per questo motivo tutti gli event-handler del caso vanno impostati
prima.
-- 
"When you have eliminated the impossible, whatever remains, 
however improbable, must be the truth."