Newsgroup: it.comp.lang.javascript
Titolo: con OP image.onload=... non funziona???

Ciao a tutti,
mi confermate che solo OP7 interpreta l'evento onload sulle immagini
caricate con JS cosě:
var myimg=new Image();
myimg.onload=function(){alert("Caricata")}
myimg.src="images.gif";
O sbaglio qualcosa, ad es. mi sono accorto che devo mettere myimg.onload
prima di myimg.src altrimenti si incavola IE...

 prima di myimg.src altrimenti si incavola IE...
No, in teoria si "incavolano" tutti.
Definendo prima il percorso potresti ottenere che l'immagine sia gia'
caricata nel momento in cui assegni la funzione all'evento.

 prima di myimg.src altrimenti si incavola IE...
E - per una volta in vita sua - ha ragione ad incavolarsi IE, ma si 
incavolano anche gli altri browser se e' per questo.
Come e' piu' volte stato ribadito in questo NG, quando ad un oggetto 
Image() assegni la proprieta' src, dai il via al download dell'immagine 
specificata.
Ergo, prima di farlo, vanno impostati gli event handler.. altrimenti 
potresti rischiare che l'immagine (perche' e' leggera, perche' e' 
cachata, o perche' il browser ne gestisce l'accesso a modo suo) venga 
caricata senza gli event-handler settati.
-- 
C'ya,
ZER0
  :. job profile - coder.gfxer.webDesigner
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 caricata senza gli event-handler settati.
Ok, sospettavo qualcosa del genere
Per fare in modo che funzioni con tutti, ti viene in mente qualche idea....
Una l'avrei: ho testato che onLoad nel tag img funziona, quindi potrei
nascondere un img....

 caricata nel momento in cui assegni la funzione all'evento.


 L'hai detto, ma intanto tu OP non lo consideravi già da tempo ;-)
Non fraintendermi: Opera non lo supporto per quanto riguarda il DHTML o 
cmq qualsiasi cosa abbia a che vedere con l'uso di Javascript che vada 
oltre "alert('hello world')".
In quanto da quel punto di vista, Opera e' piu' vicina ad una tazzina da 
caffe' che ad un browser.
Per quanto riguarda l'accessibilita', usabilita' e fruibilita' dei 
contenuti, supporto Opera come qualsiasi altro client.


 myimg.src="images.gif";
Al momento non ho installato OP6, ma quando ho provato questo
http://www.jsdir.com/staffscripts/script079.asp
ho fatto delle prove e funzionava.
Altri OP non li ho
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
Per rispondere: togli il PUNTO e metti un .

 Altri OP non li ho
Ho riprovato per sicurezza, ma il mio Opera 6.0 (build 1010) non reagisce
all'evento che, anche a memoria, mi sembra che si scateni solo dal tag image
come dice Gianni.

[...]
Dimenticavo: grazie dei ringraziamenti.

, 
ascartab...@codice.it
 says...

Uhm.... stasera reinstallo e riprovo... vatti a ricordare.
Di sicuro non andava col 5 :-)


image come dice Gianni.
Sì, sì non và con nessuno tranne che con OP7.
Ora cambiamo lievemente discorso....
Devo, ad un certo evento, far comparire n immagini (non precaricate)
contemporaneamente.
Ho fatto una mega funzione che tiene conto dei vari problemi (che poi al
limite vedremo...), per ora limitiamoci al caso in cui vada quel cavolo di
evento onload sull'obj Image...
Io ho fatto qualcosa del genere, tu hai quache altra funzione magari più
efficiente ed elegante?
var img_change=new Array(new Image(),new Image(),new Image(),new Image(),new
Image()),img_name=null,img_src=null;
var n_img;
[...]//riemp. variabili
  for(var i=0,str="";i<n_img;++i)
   str+="img_change["+i+"].onload=function(){";
  for(i=0;i<n_img;++i)
   str+="document.images[img_name["+i+"]].src=img_change["+i+"].src;"
  for(i=0;i<n_img;++i)
   str+="}";
  eval(str);
  for(i=0;i<n_img;++i)
   img_change[i].src=root+img_src[i];

 efficiente ed elegante?
Mii, che bordello :) Ma per curiosita', che cavolo stai sviluppando? Non 
ti sta venendo un po' troppo pesante e di difficile 
gestione/manutenzione futura?


 gestione/manutenzione futura?
Un sito e-commerce di alcuni capi di abbigliamento per vendita all'ingrosso
all'estero.
Nel caso specifico sto risolvendo il problema di visualizzare
contemporaneamente più immagini prese da un certo numero che pertanto non
possono essere precaricate (la cosa haimè avrebbe risolto il problema :"((
Comunque in un futuro prossimo mi farò demoralizzare dalle vostre critiche
dandovi il link.

 efficiente ed elegante?
Non ho fatto in tempo oggi a guardare il tuo codice.
Leggo con attenzione domani a mente fresca.
In verita' spero, sia per la mente fresca sia per il tempo tirannissimo.

 In verita' spero, sia per la mente fresca sia per il tempo tirannissimo.
Ti ringrazio, vorrei sottolineare che funziona.
Però dal momento che in realtà il codice prevede altre parti (come dicevo e
pian piano vedremo), allora più è ottimizzato meglio è :))
Grazie ancora