ELEMENTI DEL LINGUAGGIO HTML

Le frames

Le frames rappresentano una delle ultime aggiunte al linguaggio HTML (supportate da Netscape 2.0), e permettono di suddividere la finestra del browser in più parti, consentendo la visualizzazione di più documenti alla volta.
Generalmente vengono utilizzate per avere una intestazione ed un menù sempre visibili (in altrettante finestre che non cambiano mai il proprio contenuto), e per far apparire in una terza finestra (più grande) i contenuti man mano selezionati.
L'uso delle frames è concettualmente molto semplice, ma possono essere commessi errori che, pur banali, pregiudicano i risultati.
In ogni caso, poichè non tutti i browser supportano le frames ci si deve preventivamente chiedere se è proprio necessario il loro uso.

Prima di iniziare la programmazione è necessario procedere ad un progetto preliminare, che potrebbe essere il seguente:

Nella finestra di nome "testata" ci si può mettere il logo, nella finestra di nome "menù" ci si può mettere il menù dei collegamenti, ed infine nella finestra "pagina" appariranno i contenuti man mano selezionati.

E' necessario costruire 4 documenti HTML: il documento che definisce le tre frames (ad esempio: frames.htm), il documento che contiene il logo (ad esempio: testata.htm, il documento che contiene il menù (ad esempio il documento menu.htm) ed il documento (ad esempio: pagina.htm) che verrà visualizzato nella frame "pagina" alla prima attivazione della pagina con le frames (cioè al primo caricamento del primo documento).

Il documento che definisce le frames può essere il seguente:















&ltFRAMESET COLS="125,*"> il tag FRAMESET definisce le frames; ammette come attributo COLS il cui valore "125,*" indica che si vogliono creare due frames, costituita una da una colonna larga 125 pixel (che ospiterà il file menu.htm) e l'altra che occupa tutto lo spazio rimanente; i valori possono essere anche dati in percentuale della finestra grafica; ad esempio: COLS="25%,75%"
&ltFRAME SRC="menu.htm" NAME="menù"> avendo, con la precedente istruzione, chiarito che si desiderano due finestre verticali, il primo tag FRAME che segue indica quale pagina debba essere visualizzata (tramite il parametro SRC="menu.htm") nella prima frame a sinistra, il cui nome viene definito attraverso il parametro NAME="pagina"; il nome servirà per fare in modo che link presenti in altri documenti possano puntare alla finestra in oggetto
&ltFRAMESET ROWS="50,*"> qui avrebbe dovuto esserci l'istruzione di definizione della seconda frame; poichè vi è ancora una istruzione FRAMESET (nidificata), si intende suddividere la seconda frame a sua volta in due frames orizzontali (righe): è stato infatti utilizzato il parametro ROWS anzichè COLS
&ltFRAME SRC="logo.htm" NAME="testata" SCROLLING="no"> l'istruzione definisce la frame orizzontale superiore chiamata "testata"; l'attributo SCROLLING impostato al valore "no" evita che compaiano nella finestra le barre di scorrimento, qui giudicate inutili
&ltFRAME SRC="pagina.htm" NAME="pagina"> l'istruzione definisce la frame orizzontale inferiore chiamata "pagina"
</FRAMSET> tag di chiusura del proceso di costruzione delle due frames orizzontali
</FRAMSET> tag di chiusura del processo di costruzione delle due frames verticali

Dopo aver visto in pratica la creazione di una pagina suddivisa in frames, vediamo in dettaglio i possibili attributi dei tags FRAMESET e FRAME.










Attributi del tag <FRAMESET>...</FRAMESET>

Parametro Descrizione
ROWS="dim1,dim2,...,dimN" Suddivide la finestra (o il frame se nidificato) in n righe aventi dimensioni dim1, dim2, ..., dimN. La dimensione può essere specificata nei seguenti modi:
numero semplice: (p.es. 100) indica l'altezza in pixel che avrà la riga.
numero percentuale: (p.es. 20%) indica l'altezza in percentuale rispetto alla finestra (o il frame se nidificato) che avrà la riga.
asterisco (*): indica un'altezza variabile per la riga, e lascia al browser la facoltà di deciderne la dimensione in base al contenuto.
COLS="dim1,dim2,...,dimN" Suddivide la finestra (o il frame se nidificato) in n colonne aventi dimensioni dim1, dim2, ..., dimN. La dimensione può essere specificata nei seguenti modi:
numero semplice: (p.es. 100) indica la larghezza in pixel che avrà la colonna.
numero percentuale: (p.es. 20%) indica la larghezza in percentuale rispetto alla finestra (o il frame se nidificato) che avrà la colonna.
asterisco (*): indica una larghezza variabile per la colonna, e lascia al browser la facoltà di deciderne la dimensione in base al contenuto.
FRAMEBORDER=dimensione Definisce in pixel la dimensione del bordo delle frames; il valore 0 annulla il bordo; introdotto da Netscape (fare attenzione alla compatibilità con gli altri browser).
FRAMESPACING=dimensione Definisce in pixel la margine tra le frames (introdotto da Netscape).
BGCOLOR=#RRGGBB Assegna un colore di sfondo alla frame.















Attributi del tag: <FRAME>

Parametro Descrizione
SRC="URL" Indica il documento che verrà visualizzato nel frame cui il tag si riferisce. Può essere un URL completo o un semplice nomefile.
NAME="nome_del_frame" Definisce un nome per il frame che verrà utilizzato successivamente come segno di riconoscimento univoco per quel frame. E' possibile utilizzare qualsiasi parola. Si consigliano nomi attinenti con la funzione del frame (p.es. un frame che conterrà un menu potrà convenientemente chiamarsi menu e non con un generico frame1 o peggio ancora pippo). Si evitino infine i caratteri di sottolineatura (il perchè sarà più chiaro in seguito).
NORESIZE Se presente, inibisce all'utente la possibilità di ridimensionare il frame utilizzando il mouse. Questo è molto utile quando si debbano visualizzare delle immagini o delle icone e si vuole impedire che possano essere parzialmente o totalmente coperte.
SCROLLING= Può assumere uno fra i tre valori elencati di seguito:
yes: consente lo scrolling del contenuto del frame. Ideale per pagine particolarmente lunghe, listini, etc.
no: inibisce lo scrolling del contenuto del frame. Dovrebbe essere utilizzato con cautela in quanto, se l'utente ha la finestra mal dimensionata, tale opzione potrebbe impedire la visualizzazione di una parte del contenuto delle vostre pagine.
auto: lo scrolling verrà inibito o consentito automaticamente dal browser a seconda che il contenuto del frame sia interamente visualizzabile in un'unica soluzione oppure no.
MARGINHEIGHT=dimensione Definisce in pixel la dimensione dei margini superiore ed inferiore del contenuto del frame.
MARGINWIDTH=dimensione Definisce in pixel la dimensione dei margini sinistro e destro del contenuto del frame.

Links alle frames

Uno dei maggiori problemi che s'incontrano con i frames, è il loro collegamento tramite dei normali links. Spesso si desidera aggiornare un frame diverso da quello in cui si trova il link, oppure si desidera eliminare del tutto i frames.
Tutto ciò è facilmente ottenibile aggiungendo il parametro TARGET= al tag <A HREF="url">...</A>.
Tramite questo nuovo parametro è possibile istruire il browser in maniera tale che visualizzi la pagina individuata dal link in un ben specifico frame. Vediamo di seguito i valori possibili per il parametro TARGET=


Valore Descrizione
nome_frame Si riferisce al nome del frame specificato nel parametro NAME= del tag <FRAME>. Questo significa che la pagina indicata dal link <A HREF="url" TARGET="nome_frame">...</A> verrà visualizzata nel frame chiamato nome_frame.
_self In questo caso, la nuova pagina indicata dal link viene visualizzata nello stesso frame del link. Si noti che questo è il comportamento usuale di qualsiasi link, e dunque questo valore del paramentro TARGET= non è indispensabile, sebbene utile per avere una maggiore pulizia ed una maggiore comprensibilità del codice HTML.
_parent In questo caso, la nuova pagina indicata dal link viene visualizzata nel frame che ha richiamato la pagina che attualmente contiene il link stesso. Se la pagina contenente il link non è stata richiamata da nessun'altro link, allora questo valore ottiene gli stessi risultati del parametro _self.
_top Viene tipicamente utilizzato per terminare una pagina contenente dei frames. Se questo valore viene assegnato al parametro TARGET=, il link ad esso associato caricherà una pagina che verrà visualizzata in una finestra di dimensioni normali totalmente priva di frames.
_blank Avrete probabilmente notato che alcune pagine su Internet contengono dei link che, se cliccati, aprono una nuova copia del vostro browser. Questo effetto è ottenuto con questo valore del parametro TARGET=. E' bene non abusare di questa possibilità in quanto, se la struttura del sito non è ben congegnata, potrebbe portare ad un eccessivo numero di copie del browser aperte contemporaneamente creando potenzialmente dei problemi a quelle macchine dotate di poca memoria.

Il tag: <NOFRAMES>...</NOFRAMES>

Non tutti i browser supportano i frames. Per evitare visualizzazioni monche oppure mancanti, è necessario fornire un'alternativa automatica alla visualizzazione dei frames. Se infatti un browser supporta i frames, la sezione compresa fra i tags <FRAMESET>...</FRAMESET> viene correttamente interpretata. Se invece il browser non supporta i frames, cercherà d'interpretare tutto ciò che si trova al di fuori di tali tags. Pertanto, tutto il codice HTML contenuto fra i tags <NOFRAMES>...</NOFRAMES> verrà visualizzato esclusivamente dai browser che non supportano i frames. Il codice contenuto in tali tags dev'essere abbastanza semplice. Generalmente s'inserisce un testo che comunica l'impossibilità di visualizzare i frames ed un link all'eventuale versione delle pagine scritte in HTML standard privo di frames ma compatibile con i vecchi browser.