Newsgroup: it.comp.lang.javascript
Titolo: Ancora su NN e IE. Pulsantiera.

Salve gente,
ho un'altra 'situazione impossibile' per voi, sempre a proposito di
qeusti due maledetti browser.
Allora, il problema e' questo. A bordo pagina ho creato una pulsantiera
con 5 o 6 immagini-tasti. Usando la possibilita' di accedere via js alla
'risorsa' dell'immagine, quando passo sopra col mouse a uno di questi
tasti ho fatto si' che l'immagine cambi, per poi tornare normale quando
il mouse esce. Fin qui tutto ok con NN. Con IE l'ultima immagine-tasto
non cambia :-(((, con iCab ancora peggio, non vanno neanche alcuni tasti
intermedi.
Perche'?
Vi riporto il codice che ho usato (la pulsantiera e' dentro una cella di
tabella, la funzione Cambia() e' in realta' in un file .js esterno,
ovviamente senza le tag html):
----------------------------------------------------------------------
<SCRIPT LANGUAGE="Javascript">
<!--
function Cambia(sorgente, destinazione, testo) {
  if (sorgente != '')
    document[sorgente].src="../img/" + sorgente + "1.gif"
  if (destinazione != '')
    document[destinazione].src="../img/" + destinazione + ".gif"
  if (testo != '')
    stato(testo)
}
//-->
</SCRIPT>
[...]
<TD VALIGN="middle" ALIGN="center" ROWSPAN="2" WIDTH="92"
BGCOLOR="#9933CC">
&nbsp;<BR>
<A HREF="info.htm"
onMouseOver="Cambia('info','','Informazioni');return true"
onMouseOut="Cambia('','info','')">
<IMG NAME="info" SRC="../img/info.gif" BORDER="0" WIDTH="84"
HEIGHT="42"></A>
<P>
[qui ci sono altri cinque pulsanti uguali]
<A HREF="links.htm"
onMouseOver="Cambia('links','','La pagina dei link');return true"
onMouseOut="Cambia('','links','')">
<IMG NAME="links" SRC="../img/links.gif" BORDER="0" WIDTH="40"
HEIGHT="16"></A>
<BR>&nbsp;
</TD>
--------------------------------------------------------------------
Grazie,
Mattia
-- 
  ----------------
tes...@inwind.it
ICQ# 31984974
----------------

 intermedi. [....]
Domanda. Ma non ti funziona solo sul web o neanche sul tuo pc?
Se non funziona solo sul web il problema è nel fatto che non fai un preload delle immagini, quindi se non vedi l'ultima è solo perché il browser se la scarica *sempre* ed è magari talmente grande che
non fa in tempo a scaricarla prima che il mouse esce dal pulsante :-)))
Vai su 
http://www.jsdir.com
 nel link "Archivio" c'è un rollover (multiplo) che puoi facilmente personalizzare (o magari fai un fischio) per aggiungere anche il testo che usi, se ho ben capito, per la
barra di stato.
Ciao, Riccardo
-----------------------------------------------------------------------
http://www.bottegasanlorenzo.it
http://www.jsdir.com
Need a JavaScript password?
http://www.agora.it/Ri.Riccardi/ingresso.html
-----------------------------------------------------------------------
"Any sufficientely advanced technology is indistinguishable from magic"
Arthur Charles Clarke
-----------------------------------------------------------------------
.
.
.
.
.
 . . . . . . I Fantastici 4 stanno arrivando . . . . . . manca poco! . . . . .

 anche il testo che usi, se ho ben capito, per la barra di stato.
Hai capito bene :-)
Ci daro' un occhio e poi faccio sapere.
Ciao,


prova qualcosa del genere:
/****************************************************************
ROLLOVER CON SUPPORTO DEI LAYER
Script from 
sup...@gruppo4.com
 - 
http://www.gruppo4.com
You can use this code if you leave this message
****************************************************************/
function preload (imgName,imgSrc,imgSrcHl) {
        if (document.images) {
                eval(imgName+'Off=new image()')
                eval(imgName+'Off.src="'+imgSrc+'"')
                eval(imgName+'On=new image()')
                eval(imgName+'On.src="'+imgSrcHl+'"')
        }
}
function on(imgName,layerName) {
        if (document.images) {
                if (ns4 && layerName!=null) {
eval('document.'+layerName+'.document.images["'+imgName+'"].src = '+
imgName + 'On.src')
                }
                else {eval('document.images["'+imgName+'"].src =
'+imgName+'On.src')}
        }
}
function off(imgName,layerName) {
        if (document.images) {
                if (ns4 && layerName!=null) {
eval('document.'+layerName+'.document.images["'+imgName+'"].src = '+
imgName + 'Off.src')
                }
                else {eval('document.images["'+imgName+'"].src = '+imgName
+ 'Off.src')}
        }
}
-----
all'interno della HEAD delle pagine HTML che contengono i rollover va
inserita la chiamata allo script del preload:
<SCRIPT TYPE="text/javascript"><!--
/*      rollover preload*/
if (document.images) {
        preload('nome_immagine','URL del file','URL del file_hl')
}
//-->
</SCRIPT>
------
la chiamata del rollover dal codice HTML è del tipo:
<A HREF="" ONMOUSEOVER="on('nome_bottone','nome_layer')"
ONMOUSEOUT="off('nome_bottone','nome_layer')">
n.b.:
- se le immagini non sono contenute in un layer, basta scrivere 'null' al
posto di nome_layer, oppure si può anche non scrivere nulla.
- all'interno del tag IMG va inserito l'attributo NAME
--
Posted from 
DNS.GRUPPO4.COM
 [193.70.107.66] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Mi e' venuto in mente che portrebbe dipendere da IE 5 per Mac.
Infatti a me funzia tutto (NN 4.7 eng su PC Windows) :-)


 Infatti a me funzia tutto (NN 4.7 eng su PC Windows) :-)
Allora e' una congiura dei browser! :-)
Anzi, e' una lotta senza speranza. Non devo sorprendermi se fra qualche
giorno i problemi con IE spariranno senza preavviso (e ne compariranno
altri, ovviamente) :-)))))
Ciao e grazie,
