PROGRAMMIAMO
HTML - Frame
Suddivisione di una pagina in frame

I frame (in italiano riquadri) sono una tecnica di costruzione del layout di una pagine html, mediante la quale la pagina stessa viene composta (come una specie di puzzle) mettendo insieme più pagine diverse.

Attualmente l'uso dei frame è deprecato in HTML 5 e dunque essi non dovrebbero più essere usati. Per poter correttamente usare i frame in una pagina occorre usare l'apposito DOCTYPE:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

La costruzione di una pagina con i frame inizia da un frameset. Si tratta di una particolare pagina html, priva di body, nella quale vengono semplicemente richiamate le diverse sottopagine che andranno a comporre la pagina totale. Si tratta in sostanza di una sorta di cornice vuota. Si consideri a titolo di esempio la pagina seguente che definisce un frameset:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> 

<html>
<head>
 <meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″>
 <title>Pagina composta da frame/title>
</head>


<frameset rows=”50%,50%” cols=”50%, 50%”>
 <frame src=”prima.html”>
 <frame src=”seconda.html”>
 <frame src=”terza.html”>
 <frame src=”quarta.html”>
 
</frameset>
</html>


Si osservino le numerose particolarità della pagina, a cominciare dalla dichiarazione DOCTYPE che usa la specifica Frameset per indicare appunto che si tratta, non di una normale pagina html, ma di un frameset. Infatti, come già detto prima, questa pagina manca di body e al suo posto troviamo invece l'elemento <frameset>.

Nel caso dell'esempio <frameset rows=”50%,50%” cols=”50%, 50%”> suddivide la pagina in due righe e in due colonne di uguale ampiezza, in pratica una sorta di quadrato. All'interno di tale cornice, vengono visualizzate le pagine prima.html, seconda.html eccetera. Queste ultime sono normali pagine html, ciascuna col proprio body.

Scopi e problemi dei frame

I frame venivano largamente usati fino a non molto tempo fa per costruire layout complessi di pagine web (si tenga conto che i frame possono anche essere annidati uno dentro l'altro, come le tabelle). Per esempio si consideri il frameset seguente:

frameset-nested

Ogni parte indicata è una pagina separata. Questo permette, per esempio, di mettere nell'Header page il logo e il menu di navigazione principale del sito, nel Sub frame 1 il menu di navigazione secondario eccetera. Il vantaggio principale è che è possibile, per esempio, usare un'unica pagina Header per tutto il sito (da includere nel frameset di tutte le pagine): in questo modo, per modificare per esempio il menu di navigazione del sito, non è necessario riscrivere e ricaricare sul server web tutte le pagine, poiché basta cambiare solo la pagina Header.

Un ulteriore vantaggio, per altro ormai superato dalle tecniche di posizionamento con i fogli stile, è quando si vuole che una parte della pagina rimanga caricata permanentemente, mentre sia possibile effettuare lo scrolling separato su un'altra parte.

D'altra parte i frame comportano numerosi problemi, tanto che non sono più consentiti nel nuovo standard html 5 e il loro uso è attualmente deprecato. Per esempio i frame creano problemi quando si cerca di aggiungere una pagina nei segnalibri del browser (bookmarks), perché spesso il browser non sa a quale pagina (fra quelle che compongono il frameset) fare riferimento. Anche il pulsante per tornare indietro di una pagina del browser spesso non funziona correttamente con i frame. Anche i motori di ricerca sono messi in difficoltà dai frame, perché non sanno quale pagina indicizzare. I frame infine presentano problemi per quanto riguarda l'accessibilità della pagina.

Per tutte queste ragioni, come abbiamo già detto, i frame sono generalmente sostituiti dal posizionamento con i fogli stile. Un'alternativa moderna e non deprecata ai frame è costituita dai cosiddetti frame inline, di cui parleremo nella prossima lezione.

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it