HTML.itHTML.it


 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:

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>

    Torna a inizio pagina