HTML/XHTML  »  Guide  »  Guida HTML 

I link in un frameset e il tag noframes



Il target dei link in un frameset

In una struttura a frames può apparire difficile caricare il contenuto di un link nella sezione appropriata. Grazie all'attributo target possiamo specificare qual'è la destinazione del link; con questa sintassi siamo dunque in grado di caricare il contenuto di un collegamento nel riquadro che riteniamo più opportuno:

<a href="paginaDaLinkare.html" target="nomeDelFrame">

come si può vedere nell'esempio.

Ci sono poi delle "parole chiave" che ci consentono di ricaricare i link in destinazioni predefinite:

CodiceDescrizione

target="_blank"

Apre il link in una nuova finestra, senza nome
L'esempio è qui

target="_self"

Apre il link nel frame stesso (è così di default) L'esempio è qui

target="_parent"

Il documento viene caricato nel frameset precedente a quello corrente (più esattamente nel frame genitore)
L'esempio è qui

Il comportamento di _parent è particolarmente evidente in una struttura annidata in cui alcune pagine HTML contengono a loro volta dei frameset, come nell'esempio: in questo caso viene caricato il contenuto del link nel frameset immediatamente precedente alla pagina del link.

target="_top"

Il documento viene caricato nella finestra originale, cancellando ogni struttura a frame.
L'esempio è qui

(si noti la differenza con "_parent").

Più esattamente il documento viene carictao nella parte piùalta ("top") della struttura, ed è questo il motivoper cui il frameset stesso viene annullato e sostituito dal contenutodel link.

Può essere noioso specificare per tutti i link il target appropriato. Ci viene in aiuto allora il tag <base> che ci consente di specificare la destinazione dei tutti link in una sola volta. Il tag va inserito nella pagina contenente i link. Ad esempio:

<base target="_blank">

a questo indirizzo è possibile visualizzare l'esempio completo.

Abbiamo già incontrato il tag <base> per impostare un percorso predefinito di default. Ovviamente è possibile combinare i due attributi di <base>:

<base href="http://www.html.it" target="_blank">

Questa sintassi indica che l'indirizzo di base per i percorsi della pagina è http://www.html.it e che tutti i link vanno aperti in una nuova pagina.

Il tag noframes

All'interno della dichiarazione del <frameset> abbiamo sempre visto comparire l'elemento <noframes>: questo tag serviva per browser particolarmente obsoleti (come Mosaic 2) che non erano in grado di leggere e visualizzare una struttura frameset. In previsione di situazioni di questo genere è possibile inserire all'interno del tag <noframes> un contenuto appositamente studiato per questa eventualità, ad esempio l'avvertimento che il sito è strutturato a frame, o un contenuto alternativo, oppure una descrizione per i motori di ricerca (come vedremo tra breve).

La struttura è la seguente:

<frameset rows="50%,50%">
  <frame src="prima.html">
  <frame src="seconda.html">

  <noframes>
    <p>Qui può essere indicato il link a
    <a href="senzaFrame.html">una versione del sito</a>
    che non utilizzi un layout a frame, oppure un 
    contenuto alternativo, o anche una descrizione
    per i motori di ricerca.</p>
  </noframes>
</frameset>

È importante capire una volta per tutte come funziona questo genere di tag, dal momento che un tipo di struttura di questo genere ricorre in diverse occasioni nell'HTML: il tag <noscript> e i contenuti alternativi nel caso dell'<iframe> utilizzano infatti gli stessi principi di funzionamento.

I browser obsoleti non sono in grado di interpretare né la struttura di un frameset, né tanto meno il <noframes>: non essendo un tag previsto nelle specifiche rilasciate all'epoca in cui questi browser sono stati costruiti, si tratta infatti di una sintassi del tutto oscura per loro.

Di tutto il codice in questione l'unica parte comprensibile a questo genere di browser è l'HTML standard compreso all'interno del <noframes>: e questo si limitano a leggere.

Sono invece i browser moderni che sanno di dover ignorare il <noframes>, dal momento che il suo contenuto non li riguarda.

C'è da dire che, se tutti i browser odierni sono in grado di interpretare correttamente la struttura di un frameset, viceversa sotto molti punti di vista i motori di ricerca sono paragonabili a browser obsoleti, e non è raro che un sito organizzato a frame sia inserito nell'indice dei motori di ricerca in maniera non corretta: per questo motivo alcuni di essi "catturano" il contenuto del <noframes> come descrizione di un sito.

Quindi per evitare messaggi di questo genere a seguito di una ricerca in rete:

Figura 1. Messaggio del motore di ricerca per pagine senza "noframes"

Messaggio del motore di ricerca per pagine senza

è bene utilizzare il tag noframes per indicare la descrizione del sito: in questo modo miglioriamo anche il posizionamento nei motori di ricerca. Ad esempio:

<frameset rows="50%,50%">
  <frame src="prima.html">
  <frame src="seconda.html">
  
  <noframes>
    <p>Su PRO.HTML.it - Approfondimenti sul Web Publishing e articoli per webmaster</p>
  </noframes>
</frameset>

Ultimi articoli HTML/XHTML

Inserire video nelle pagine Web con HTML5

Codec, compatibilità dei browser, tools, codice e best practices per...

LungoJS: semantica HTML5 per il mobile

Realizzare layout per dispositivi mobili tenendo conto della...

Web storage, i cookies secondo HTML5

Come rendere persistenti i dati con HTML5

HTML5, section o article? ...E il div?

Cerchiamo di fare chiarezza sull'uso di questi due nuovi elementi e...

HTML5, la validazione del codice

Gli strumenti per verificare l'aderenza agli standard di pagine e...

Altri articoli

Guide HTML/XHTML

Guida HTML5

Una guida per conoscere e applicare da subito le novità introdotte...

Guida XHTML

XHTML è il nuovo standard per il WEB ed è la transizione verso...

Altre guide

Newsletter @Daily HTML.it

Ogni mattina, dal lunedì al venerdì, le novità pubblicate su tutti i siti tecnici del network HTML.it: articoli, guide, notizie dal Web, blog e molto altro.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Webmaster base

18 Giugno 2012 a Milano
Disponibilità: 6 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti

Corso Webmaster base

11 Giugno 2012 a Roma
Disponibilità: 7 Posti