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:
Codice | Descrizione |
---|---|
target="_blank" |
Apre il link in una nuova finestra, senza nome ( esempio) |
target="_self" |
Apre il link nel frame stesso (è così di default) (esempio) |
target="_parent" |
Il documento viene caricato nel frameset precedente a quello corrente (più esattamente nel frame genitore) (esempio) 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. (esempio) (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 in cui diamo a tutti i link il target base di un frame chiamato contenuto
.
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:
è 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>