Newsgroup: it.comp.lang.javascript
Titolo: [AIUTO] Come caricare le immagini in memoria senza visualizzarle su schermo

Salve a tutti,
	Sono un webmaster & webdesigner con qualche interesse verso la programmazione
javascript.
Di recente mi sono imbattuto in uno script molto interessante, che permetteva di scambiare
due immagini (il tipico effetto rollover) accedendo ad un link esterno.
In pratica, bastava spostarsi con il cursore sopra questo link (che non e' l'immagine), e
un'immagine cambiava.
In pratica lo script sostituisce l'immagine al passaggio dello script. Fin qui tutto bene,
infatti offline, sul mio HDD tutto si svolge secondo le mie intenzioni. Ma quando sposto i
file online, succede una cosa non molto piacevole.
Le immagini sostitute, cioe' quelle che devono sostituirsi alla principale al momento del
passaggio sopra il link, non si visualizzano. Il problema e' che si mette a scaricarle una
volta che mi soffermo sul link.
Come posso ovviare questo problema? Stavo pensando che l'unico modo e' caricare le
immagini senza visualizzarle, ma non so se e' possibile...
mi potete dare una mano?
ecco di seguito il codice della pagina:
***************************************************
******* Tralascio i tag principali ****************
***************************************************
<SCRIPT language="JavaScript">
var isJsOneOne = false;
</SCRIPT>
<SCRIPT language="JavaScript1.1">
isJsOneOne = true;
</SCRIPT>
</HEAD>
<BODY BGCOLOR="white" vlink="blue" link="blue">
<BR><BR>
<div align="center">
<FONT SIZE=4 FACE="Arial">
<A HREF="
http://www.link.it
" onmouseover="if (isJsOneOne) cambio.src='01.jpg';"
onmouseout="if (isJsOneOne) cambio.src='bianco.gif';">Primo esempio</A>
<BR><BR>
<A HREF="
http://www.link.it
" onmouseover="if (isJsOneOne) cambio.src='02.jpg';"
onmouseout="if (isJsOneOne) cambio.src='bianco.gif';">Secondo esempio</A>
<BR><BR><BR><BR>
<img src="bianco.gif" width=80 height=80 hspace=2 border=0 name="cambio">
<B></B></FONT>
</div>
***************************************************
La struttura funziona in questo modo; c'e' un'immagine bianca grande quanto quelle da
sostituire, che al momento del passaggio del link viene sostituita da un'altra immagine.
Grazie a chi vorra' rispondermi.
  ~ L o r d  S o t h ~
Coordinatore Project Zero
[
http://www.anvi.it/bnet/
]
[ICQ: 13171216]
Webmaster & Webdesigner
C.O. Project Zero sez. Diablo 2

 immagini senza visualizzarle, ma non so se e' possibile...
 
Il trucco è proprio quello di caricare le immagini prima in Cache:
cambio1=new Image()
cambio1.src="01.jpg"
cambio2=new Image()
cambio2.src="02.jpg"
Questo in testa alla pagina.
Poi, sugli eventi onMouseOver, per Primo Esempio, ad esempio: 
onMouseOver="if (isJsOneOne) cambio.src=cambio1.src;"

Ogni volta che fai una cosa del genere:
document.nomeimmagine.src = "nomefile.gif"
è ovvio che il browser cerca sul disco il file gif e lo carica in memoria.
Per ovviare a questo inconveniente basta dichiarare delle variabili Image()
var immagine1 = new Image()
immagine1.src="nomefile.gif"
poi basta sostituire le immagini in questa maniera:
document.nomeimmagine.src = immagine1.src
ATTENZIONE: non funzia con IE 3.0

Mentre mangiavo delle patate speziate alla taverna di Otik, ho udito dalla bocca di the
fly on the net uscire queste parole:

Grazie infinitamente...
Perdonate ancora la mia ignoranza, ma potreste scrivermi per favore, un listato completo
del codice? Ho alcuni problemi ad interpretarlo...
e perche' non funziona con IE3.0?


e perche' non funziona con IE3.0?
eheheh spero che abbiate capito che si trattava di uno scherzo.... ^__^


AH, AH, AH, AH, AH, AH, AH, AH
Non funzia con IE 3.0 perché non supporta gli l'oggetto Image(). Se provi ad
eseguire questo codice:
porno = new Image()
ti dice che Image() non č un oggetto o una cosa del genere.
In IE 4.0 Bill in persona ha risolto questo megabug.
CIAO ^___^