- Learn
- Guida Flash e JavaScript
- Esempio 4: codice in un altro frame
Esempio 4: codice in un altro frame
- di negatyve
Riassumiamo: siamo riusciti ad eseguire codice Javascript sia da una pagina HTML, sia da un filmato Flash; abbiamo visto l’applicazione ad un filmato di un metodo per Flash; abbiamo eseguito questo metodo da una pagina HTML e da un filmato; abbiamo eseguito il metodo da un filmato perchè avesse effetto su un altro filmato della stessa pagina.
Prima di vedere il dettaglio dei metodi Javascript per Flash, ci mancano quindi solo un altro paio di esempi: esempi che non presentano nessuna tecnica nuova, ma che sono miscugli di cose già viste precedentemente all’interno di questa guida.
Esecuzione di un metodo in un altro frame
La pagina d’esempio è un frameset composto da due frame. Nel frame a sinistra abbiamo il filmato che chiama il metodo, nel frame a destra abbiamo la definizione del codice Javascript e il filmato sul quale viene applicato. Il filmato a sinistra non ha i tag per i metodi, il filmato a destra sì.
Codice del frameset
<html> <head> <title>Frameset</title> <script language="JavaScript" type="text/JavaScript"> <!-- function riempi() { this.moveTo(0,0); this.resizeTo(screen.availWidth, screen.availHeight); } //--> </script> </head> <frameset cols="*,*" framespacing="0" frameborder="no" border="0" onLoad="riempi()"> <frame src="sx.html" name="sx" noresize> <frame src="dx.html" name="dx" noresize> </frameset> <noframes><body></body></noframes> </html>
È utile puntalizzare un paio di aspetti:
- la funzione scritta nel frameset serve solo ad allargare la pagina fino a riempire lo schermo, e non ha a che vedere con il nostro esempio
- i frame che compongono il frameset si chiamano
dx
esx
, e il fatto che così si chiamino le pagine HTML in essi contenute, lo ripeto, è solo accidentale
Codice della pagina HTML di sinistra
(filmato che chiama la funzione Javascript nell’altro frame)
<html> <head> <title>sx</title> </head> <body bgcolor="#339999"> <object classid="[...]" codebase="[...]" width="400" height="300"> <param name="movie" value="sx.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#cccccc" /> <embed src="sx.swf" quality="high" bgcolor="#cccccc" width="400" height="300" type="[...]" pluginspage="[...]"> </embed> </object> </body> </html>
Anche qui soffermiamoci su alcuni aspetti:
- l’assenza di funzioni Javascript, definite invece nell’altra pagina
- l’assenza dei tag per i metodi Javascript: il filmato richiama un codice, ma non lo subisce. I tag sono quindi definiti per il filmato nell’altra pagina
Codice della pagina di destra
(filmato sul quale agisce il metodo Javascript)
<html> <head> <title>dx</title> <script language="JavaScript" type="text/JavaScript"> <!-- function avviaFilmato() { var IE = navigator.appName.indexOf("Microsoft") != -1; var filmato = IE ? window.mainMovie : window.document.mainMovie; filmato.Play(); } //--> </script> </head> <body bgcolor="#006699"> <object classid="[...]" codebase="[...]" width="400" height="300" id="mainMovie"> <param name="movie" value="dx.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> <embed src="dx.swf" quality="high" bgcolor="#ffffff" width="400" height="300" name="mainMovie" swLiveConnect="true" type="[...]" pluginspage="[...]"> </embed> </object> </body> </html>
Qui notiamo:
- la definizione della funzione Javascript che chiameremo dal frame di sinistra
- i tag di incorporamento per i metodi Javascript
Al pulsante del filmato di sinistra è associato questo script:
on(release){ getURL("javascript:parent.dx.avviaFilmato()"); }
Il risultato
Attenzione! Il codice indicato sopra può essere sostituito questo:
on(release) { getURL("javascript:avviaFilmato()", "dx" ); }
Come già spiegato precedentemente, con solo l’indicazione del nome del frame come secondo parametro del getURL()
, Flash riesce a raggiungere il frame indipendentemente dal suo grado di annidamento: utilizzando invece la notazione HTML, bisogna anche indicare parent
.
Questo metodo risulta forse anche più semplice, soprattutto quando il frame è chissà dove. Ma ripeto, funziona solo quando c’è un unico frame ad avere quel nome. In una situazione di omonimia tra frame, come quella in figura, Flash fa riferimento al frame più vicino, e non ci permette di arrivare all’altro.
Frameset con nomi ripetuti
Per questo motivo, se il nostro frameset è composto da soli due frame, è comodo usare il metodo dei due parametri, altrimenti è sempre meglio usare la notazione HTML. Ad ogni modo, quando non c’è differenza tra i due, indicherò entrambi.
Se vuoi aggiornamenti su Esempio 4: codice in un altro frame inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
Creare del fumo colorato con Gimp
In questo tutorial vedremo come rendere il colore bianco del fumo piacevolmente colorato, in modo semplice e veloce. La tecnica […]