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:
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 motivo
per cui il frameset stesso viene annullato e sostituito dal contenuto
del 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.
Approfondimenti
Tutti si chiedono quasi subito come cambiare il contenuto di due frame con
un solo click del mouse dell'utente. Ecco
una soluzione.
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>