Newsgroup: it.comp.lang.javascript
Titolo: image preload diverso comportamento IE Mozilla

Effettuando un image preload e mostrando le immagini in successione ho un
diverso comportamento, in Mozilla comincia a mostrare le immagini mentre
deve finire di caricare (situazione ideale), in IE non le mostra finchè non
le ha caricate tutte iniziando a visualizzarle oltretutto non dalla
prima(situazione pessima).
Come posso ovviare questo problema con IE?
Di seguito il codice:
<script type="text/javascript">
<!--
/* define image width and height */
var pic_width=100;
var pic_height=100;
/* define the length of time to stay on each image */
/* 1000 = 1 second */
var delay=2000;
/* define image urls */
if (document.images)
 {
     pic1= new Image(pic_width,pic_height);
     pic1.src="
http://someplace.com/image1.gif
";
     pic2= new Image(pic_width,pic_height);
     pic2.src="
http://someplace.com/image2.gif
";
     pic3= new Image(pic_width,pic_height);
     pic3.src="
http://someplace.com/image3.gif
";
     pic4= new Image(pic_width,pic_height);
     pic4.src="
http://someplace.com/image4.gif
";
     pic5= new Image(pic_width,pic_height);
     pic5.src="
http://someplace.com/image5.gif
";
 }
var pics= new Array(5)
   pics[0]=pic1.src;
   pics[1]=pic2.src;
   pics[2]=pic3.src;
   pics[3]=pic4.src;
   pics[4]=pic5.src;
var numpics=5;
var thenum=0;
imgName="img1";
function change_it()
 {
   if (document.images)
    {
      document.write("<img src='"+pics[thenum]+"' border='0' width='"+pic_width+"'
height='"+pic_height+"' name='img1'>\n");
      setTimeout('change_it2()',delay);
   }
}
function change_it2()
 {
         var x=0;
          thenum+=1;
           if (thenum>numpics-1)
             thenum=0;
           document[imgName].src=pics[thenum];
           x+=1;
           setTimeout('change_it2()',delay);
 }
//-->
</script>
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Secondo me devi stare attento a togliere i riferimenti di "src" nel
documento html... in questo modo (ad esempio lasciando <img src="">) IE
non riesce a scaricare l'immagine... le immagini le aggiungerai te in
un secondo momento tramite script...


... non carico le immagini con tag <img src=""> le visualizzo richiamando lo
script in riferimento (inserito tra i tag <head>) in questo modo
<body>
<script type="text/javascript">
<!--
  change_it();
//-->
</script>
</body>
che dovrebbe visualizzare le immagini in sequenza caricate nell' array pics.
Mozilla lo fa correttamente mentre internet explorer comincia a visualizzare
le immagini dopo che ha caricato tutto ma non dalla prima!


** Innanzi tutto direi...
<body onLoad="change_it(); ">
********************************************
Script per caricare immagini il cui percorso è passato tramite
parametro.
Non vi è un vincolo al numero di parametri...
*******************************************
function preLoadImages(){
	var i, img = new Array();
	var args = preLoadImages.arguments;
	for(i=0; i<(parseInt(args.length)); i=i+1){
		img[i] = new Image();
		img[i].src = args[i];
	}
}
******************************************
Questo per farti vedere la possibilità di utilizzare:
 - l'attributo "length" per vedere la cardinalità di un array (numero
di elementi)
 - la possibilità di realizzare un array di immagini
E' chiaro che se volessi utilizzare un array pre-definito... Ovviemente
dichiarato ed eventualmente inizializzato prima del suo utilizzo nel
codice...
******************************************
var img_which = new Array();
img_which[0] = 'IMMAGINI/FINITE/TitoloDitta_short.gif';
img_which[1] = 'IMMAGINI/FINITE/IQNET.gif';
img_which[2] = 'IMMAGINI/FINITE/mappa_short_ubicazione.gif';
img_which[3] = 'IMMAGINI/FINITE/ico_chiudi.gif';
img_which[4] = 'IMMAGINI/FINITE/ico_chiudi_blu.gif';
img_which[5] = 'IMMAGINI/FINITE/IQNET.gif';
******************************************
In questo caso non avrei bisogno di passare alcun argomento alla mia
funzione...
e dovrei sostituire "args.length" con "img_which.length"
************EXTRA - 1
var img; // NON E' NECESSARIO UN ARRAY
for(j=0; j<(parseInt(img_which.length)); j++){
	img = new Image();
	img.src = img_which[j];
	loc.src = img.src; // IN "loc" vi si trova il posto dove voglio andare
a mettere l'img
}
***********EXTRA - 2
Quando hai un attimo di tempo i porrei il tuo codice in file esterno
nome.js
Devi inserire nell'header:
<head>
...
<script type="text/javascript" src="nome.js"></script>
</head>