Introduzione a JavaScript
Part 3
Frames e JavaScript.
Ecco l' HTML :
<HTML> <HEAD> <title>Frames</title> </HEAD> <FRAMESET ROWS="50%,50%"> <FRAME SRC="frtest1.htm" name="fr1"> <FRAME SRC="frtest2.htm" name="fr2"> </FRAMESET> </HTML>
Per prima cosa occorre dire al browser quanti frames si vuole visualizzare. Questo � definito nel tag <frameset...> . Le istruzioni da utilizzare sono cols e rows per creare rispettivamente colonne e righe. Le istruzioni <frameset...> possono essere annidate:
<FRAMESET COLS="50%,50%"> <FRAMESET ROWS="50%,50%"> <FRAME SRC="cell.html"> <FRAME SRC="cell.html"> </FRAMESET> <FRAMESET ROWS="33%,33%,33%"> <FRAME SRC="cell.html"> <FRAME SRC="cell.html"> <FRAME SRC="cell.html"> </FRAMESET> </FRAMESET>
Si sono create due colonne e la seconda �
stata divisa in 3 parti uguali.
Quando si utilizza JavaScript � importate utilizzare i nomi dei
frames.
Un altro esempio:
Questo mostra come � possibile scrivere alcuni frasi di testo in un determinato frame mediante la pressione di un pulsante.
Ecco il sorgente:
frames.htm
<HTML> <HEAD> <title>Frames</title> </HEAD> <FRAMESET ROWS="50%,50%"> <FRAME SRC="frame1.htm" name="fr1" noresize> <FRAME SRC="frame2.htm" name="fr2"> </FRAMESET> </HTML>
frame1.htm
<HTML> <HEAD> <script language="JavaScript"> <!-- Hiding function hi() { document.write("Hi!<br>"); } function yo() { document.write("Yo!<br>"); } function bla() { document.write("bla bla bla<br>"); } // --> </script> </HEAD> <BODY> This is our first frame! </BODY> </HTML>
frame2.htm
<HTML> <body> This is our second frame! <p> <FORM NAME="buttonbar"> <INPUT TYPE="button" VALUE="Hi" onClick="parent.fr1.hi()"> <INPUT TYPE="button" VALUE="Yo" onClick="parent.fr1.yo()"> <INPUT TYPE="button" VALUE="Bla" onCLick="parent.fr1.bla()"> </FORM> </BODY> </HTML>
L'utente carica il primo file (frames.htm), questo crea i frames e carica il file frame1.htm nel primo frame ('fr1') e frame2.htm nel secondo frame ('fr2'). Il primo frame1.htm contiene alcune functions di JavaScript, ma non sono chiamate all'interno del file frame1.htm ma da frame2.htm.! I bottoni presenti in frame2.htm lanciano le funzioni definite in frame1.htm; la propiet� onClick ora include : parent.fr1... che cosa significa ? frame1.htm e frame2.htm sono caricati dalle istruzioni del file frames.htm, frames.htm � chiamato 'parent' (dgli altri due). Coseguentemente i nuovi 3 frames sono i 'child- frames' (di frames.htm).
frames.htm parent / \ / \ / \ fr1(frame1.htm) fr2(frame2.htm) children
Si pu� estendere questo concetto creando un 'grandchildren' in questo modo:
frames.htm parent / \ / \ / \ fr1(frame1.htm) fr2(frame2.htm) children / \ / \ / \ gchild1 gchild2 'grandchildren'
Se si vuole far riferimento a funzioni definite in 'parent', occorre indicare parent prima del nome della function. Se invece si vogliono chiamare functions definite in frame1.htm devo specificare anche fr1. (fr1 � il nome che si era assegnato, all'interno di frames.htm, ad un frame specifico ). Quindi, come si pu� notare anche dal grafico, non ci sono connessioni dirette tra i files frame1.htm e frame2.htm, quando chiamo (da frame2.htm) functions definite in frame1.htm, devo per forza indicarle passando attraverso il 'frame parent' :
<...
onClick="parent.fr1.hi()">
<... onClick="parent.fr1.yo()">
<... onClick="parent.fr1.bla()">
� possibile cancellare i frames una volta creati ?
Certamente:
basta aggiungere TARGET="_top" al tag <a
href...> .
Es.:
<a href="goaway.html" TARGET="_top">Clicca qui per uscire dai frames</a>
Ultimo aggiornamento: