Al contrario dello script precedente (
RollOver Three-State per sito senza frames) qui non abbiamo bisogno di gestire il cambio di pagina nello script, dato che le pagine cliccate verranno caricate in un frame diverso da quello dove lavora il menu, l'unica cosa cheè necessario gestire è il rollover delle immagini.
Nel codice che segue ho evidenziato solo le porzioni modificate (ovviamente non c'è più la funzione
Bottoni() né l'event-handler nel <body>)
<SCRIPT>
<!--
var nome = new Array ("a","b","c")
var source = new Array ();
var sourceoff = new Array ();
var sourceon = new Array ();
var numattivo=0;
for (conta in nome)
{
source[conta] = new Image();
source[conta].src = nome[conta]+".gif";
sourceoff[conta] = new Image();
sourceoff[conta].src = nome[conta]+"_p.gif";
sourceon[conta] = new Image();
sourceon[conta].src = nome[conta]+"_on.gif";
}
function swp(numero)
{
if (numattivo!=numero)
document[String(nome[numero])].src=source[numero].src;
}
function UNswp(numero)
{
if (numattivo!=numero)
document[String(nome[numero])].src=sourceoff[numero].src;
}
function bton(numero)
{
var oldnum=numattivo;
numattivo=numero;
UNswp(oldnum);
document[String(nome[numero])].src=sourceon[numero].src;
}
//-->
</SCRIPT>
. . .
<BODY ... >
. . .
<A HREF="pagina_1.html" TARGET="sito" onClick="bton(0)" onMouseOver="swp(0)" onMouseOut="UNswp(0)">> [...
...] <IMG BORDER="0" SRC="a_p.gif" NAME="a" WIDTH="81" HEIGHT="14"></A>
. . .
Notiamo subito che questa volta la variabile
numattivo non è semplicemente dichiarata, bensì posta uguale a zero, altrimenti alla prima esecuzione otterremmo un errore perché non farebbe riferimento a nessuna immagine.
La prima differenza che troviamo, sempre rispetto all'altro RollOver Three-State, è che il link ora non ha più bisogno di portarsi dietro i numero di bottone cliccato, perché la pagina voluta viene caricata altrove ed il frame che contiene il menu non cambia.
Resta naturalmente la solita funzione
bton() che questa volta fa un lavoro leggermente diverso: prima si conserva in una variabile locale (
oldnum) il vecchio valore di
numattivo (cioè l'indice dell'eventuale bottone cliccato in precedenza), poi assegna a
numattivo il nuovo valore ricevuto dal link.
L'operazione successiva è riportare allo stato iniziale (
UNswp()) il bottone che era stato cliccato in precedenza, alla fine provvede a cambiare l'immagine associata al link cliccato.
Tutto qua.
Ovviamente lo script presuppone che il frame del menu rimanga fisso e
non venga mai cambiato dal resto del sito.
Se doveste avere questa necessità, sarà sufficiente ripristinare la funzione
Button() vista nello script precedente ed eventualmente passargli il giusto parametro
MenuButton, ma è un'eventualità che non dovrebbe verificarsi.