16 Frame

Argomenti

  1. Introduzione ai frame
  2. Configurazione dei frame
    1. L'elemento FRAMESET
    2. L'elemento FRAME
  3. Specificare le informazioni dei frame di destinazione
    1. Impostare la destinazione predefinita per i collegamenti
    2. Semantica della destinazione
  4. Contenuto alternativo
    1. L'elemento NOFRAMES
    2. Descrizioni estese dei frame
  5. Frame in linea: l'elemento IFRAME

16.1 Introduzione ai frame

I frame HTML permettono agli autori di presentare i documenti in visualizzazioni multiple, che possono essere finestre indipendenti o sub-finestre. Le visualizzazioni multiple offrono ai progettisti un modo per mantenere visibili certe informazioni, mentre altre visualizzazioni vengono fatte scorrere o rimpiazzate. Per esempio, all'interno della stessa finestra, un frame potrebbe visualizzare un banner statico, il secondo un menu di navigazione, e il terzo il documento principale che può essere fatto scorrere comunque o rimpiazzato navigando nel secondo frame.

Ecco un semplice documento con frame:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "http://www.w3.org/TR/REC-html40/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Un semplice documento frameset</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
  <FRAMESET rows="100, 200">
      <FRAME src="contenuti_del_frame1.html">
      <FRAME src="contenuti_del_frame2.gif">
  </FRAMESET>
  <FRAME src="contenuti_del_frame3.html">
  <NOFRAMES>
      <P>Questo documento frameset contiene:
      <UL>
         <LI><A href="contenuti_del_frame1.html">Del contenuto opportuno</A>
         <LI><IMG src="contenuti_del_frame2.gif" alt="Un'immagine opportuna">
         <LI><A href="contenuti_del_frame3.html">Dell'altro contenuto opportuno</A>
      </UL>
  </NOFRAMES>
</FRAMESET>
</HTML>

che potrebbe creare una configurazione di frame simile a questa:

 ---------------------------------------
|         |                             |
|         |                             |
| Frame 1 |                             |
|         |                             |
|         |                             |
|---------|                             |
|         |          Frame 3            |
|         |                             |
|         |                             |
|         |                             |
| Frame 2 |                             |
|         |                             |
|         |                             |
|         |                             |
|         |                             |
 ---------------------------------------

Se l'interprete non può visualizzare i frame o non è configurato per farlo, esso presenterà i contenuti dell'elemento NOFRAMES.

16.2 Configurazione dei frame

Un documento HTML che descrive la configurazione dei frame (chiamato documento basato su frame) ha un'apparenza diversa da un documento HTML senza frame. Un documento standard ha una sezione HEAD e una sezione BODY. Un documento basato su frame ha una sezione HEAD, e una FRAMESET al posto della sezione BODY.

La sezione FRAMESET di un documento specifica la configurazione delle visualizzazioni nella finestra principale dell'interprete. Inoltre, la sezione FRAMESET può contenere un elemento NOFRAMES per fornire contenuto alternativo per gli interpreti che non supportano i frame o che sono configurati per non visualizzarli.

Gli elementi che potrebbero normalmente essere posti nell'elemento BODY non devono comparire prima del primo elemento FRAMESET altrimenti il FRAMESET sarà ignorato.

16.2.1 L'elemento FRAMESET

<![ %HTML.Frameset; [
<!ELEMENT FRAMESET - - ((FRAMESET|FRAME)+ & NOFRAMES?) -- suddivisione della finestra -->
<!ATTLIST FRAMESET
  %coreattrs;                          -- id, class, style, title --
  rows        %MultiLengths; #IMPLIED  -- lista delle lunghezze,
                                          predefinito: 100% (1 riga) --
  cols        %MultiLengths; #IMPLIED  -- lista delle lunghezze,
                                          predefinito: 100% (1 colonna) --
  onload      %Script;       #IMPLIED  -- tutti i frame sono stati caricati  -- 
  onunload    %Script;       #IMPLIED  -- tutti i frame sono stati rimossi -- 
  >
]]>

Definizioni degli attributi

rows = multi-length-list [CN]
Questo attributo specifica la configurazione dei frame orizzontali. È una lista di pixel, percentuali e lunghezze relative separate, tra loro, da virgole. Il valore predefinito è 100%, che significa una riga.
cols = multi-length-list [CN]
Questo attributo specifica la configurazione dei frame verticali. È una lista di pixel, percentuali e lunghezze relative separate, tra loro, da virgole. Il valore predefinito è 100%, che significa una colonna.

Attributi definiti altrove

L'elemento FRAMESET specifica la configurazione della finestra principale dell'utente nei termini di subspazi rettangolari.

Righe e colonne 

Impostare l'attributo rows definisce il numero di subspazi orizzontali in un insieme di frame (frameset). Impostare l'attributo cols definisce il numero di subspazi verticali. Entrambi gli attributi possono essere impostati simultaneamente per creare una griglia.

Se l'attributo rows non è impostato, ciascuna colonna si estende sull'intera lunghezza della pagina. Se l'attributo cols non è impostato, ciascuna riga si estende sull'intera larghezza della pagina. Se nessuno dei due attributi è impostato, il frame occupa esattamente le dimensioni della pagina.

I frame sono creati da sinistra a destra per le colonne e dall'alto in basso per le righe. Quando entrambi gli attributi sono specificati, le visualizzazioni vengono create da sinistra a destra nella prima riga in alto, da sinistra a destra nella seconda riga, ecc.

Il primo esempio divide lo schermo verticalmente in due (cioè, crea una metà superiore e una metà inferiore).

<FRAMESET rows="50%, 50%">
...il resto della definizione...
</FRAMESET>

L'esempio successivo crea tre colonne: la seconda ha una larghezza fissa di 250 pixel (utile, per esempio, per contenere un'immagine di dimensioni conosciute). La prima riceve il 25% dello spazio rimanente e la terza il 75% dello spazio rimanente.

<FRAMESET cols="1*,250,3*">
...il resto della definizione...
</FRAMESET>

L'esempio seguente crea una griglia 2x3 di subspazi.

<FRAMESET rows="30%,70%" cols="33%,34%,33%">
...il resto della definizione...
</FRAMESET>

Per l'esempio seguente, si supponga che la finestra del browser sia attualmente alta 1000 pixel. Alla prima visualizzazione viene assegnato il 30% dell'altezza totale (300 pixel). Per la seconda visualizzazione è specificata l'altezza esatta di 400 pixel. Questo lascia 300 pixel che possono essere suddivisi tra gli altri due frame. L'altezza del quarto frame è specificata come "2*", così è alta due volte il terzo frame, la cui altezza è soltanto "*" (equivalente a 1*). Perciò il terzo frame sarà alto 100 pixel e il quarto 200 pixel.

<FRAMESET rows="30%,400,*,2*">
...il resto della definizione...
</FRAMESET>

Lunghezze assolute che sommandosi non raggiungono il 100% del reale spazio disponibile dovrebbero essere aggiustate dall'interprete . Quando sotto-dimensionato, lo spazio rimanente dovrebbe essere assegnato proporzionalmente a ciascuna visualizzazione. Quando sovradimensionato, ogni visualizzazione dovrebbe essere ridotta in base alla proporzione specificata del suo spazio totale.

Insiemi di frame annidati 

Gli insiemi di frame possono essere annidati a qualsiasi livello.

Nel seguente esempio, il FRAMESET esterno divide lo spazio disponibile in tre colonne uguali. Il FRAMESET interno poi divide la seconda area in due righe di altezza diversa.

<FRAMESET cols="33%, 33%, 34%">
     ...contenuti del primo frame...
     <FRAMESET rows="40%, 50%">
        ...contenuti del secondo frame, prima riga...
        ...contenuti del secondo frame, seconda riga...
     </FRAMESET>
     ...contenuti del terzo frame...
</FRAMESET>

Condivisione di dati tra frame 

Gli autori possono condividere dati tra diversi frame includendo questi dati attraverso un elemento OBJECT. Gli autori dovrebbero includere l'elemento OBJECT nell'elemento HEAD di un documento frameset e dargli il nome con l'attributo id. Qualsiasi documento che sia il contenuto di un frame nel frameset può fare riferimento a questo identificatore.

Il seguente esempio illustra come uno script possa fare riferimento ad un elemento OBJECT definito per un intero frameset:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "http://www.w3.org/TR/REC-html40/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Questo è un frameset con OBJECT nella HEAD</TITLE>
<!-- Questo OBJECT non viene presentato! -->
<OBJECT id="myobject" data="data.bar"></OBJECT>
</HEAD>
<FRAMESET>
    <FRAME src="bianca.html" name="bianca">
</FRAMESET>
</HTML>

<!-- In bianca.html -->
<HTML>
<HEAD>
<TITLE>Pagina di Bianca</TITLE>
</HEAD>
<BODY>
...l'inizio del documento...
<P>
<SCRIPT type="text/javascript">
parent.myobject.myproperty
</SCRIPT>
...il resto del documento...
</BODY>
</HTML>

16.2.2 L'elemento FRAME

<![ %HTML.Frameset; [
<!-- i nomi di frame riservati iniziano con "_" altrimenti iniziano con una lettera -->
<!ELEMENT FRAME - O EMPTY              -- subfinestra -->
<!ATTLIST FRAME
  %coreattrs;                          -- id, class, style, title --
  longdesc    %URI;          #IMPLIED  -- collegamento ad una
descrizione estesa
                                          (complementa il titolo) --
  name        CDATA          #IMPLIED  -- nome del frame per la destinazione --
  src         %URI;          #IMPLIED  -- sorgente del contenuto del frame --
  frameborder (1|0)          1         -- richiesta bordi del frame? --
  marginwidth %Pixels;       #IMPLIED  -- ampiezza margini in pixel --
  marginheight %Pixels;      #IMPLIED  -- altezza margini in pixel --
  noresize    (noresize)     #IMPLIED  -- consente agli utenti ridimensionamento di frame? --
  scrolling   (yes|no|auto)  auto      -- barra di scorrimento o no --
  >
]]>

Definizioni degli attributi

name = cdata [CI]
Questo attributo assegna un nome al frame corrente. Questo nome può essere usato come destinazione di collegamenti successivi.
longdesc = uri [CT]
Questo attributo specifica un collegamento a una descrizione estesa del frame. Questa descrizione dovrebbe integrare la breve descrizione fornita usando l'attributo title, e può essere particolarmente utile per interpreti non visuali.
src = uri [CT]
Questo attributo specifica la locazione dei contenuti iniziali che dovranno essere contenuti nel frame.
noresize [CI]
Quando presente, questo attributo booleano comunica all'interprete che la finestra del frame non può essere ridimensionabile.
scrolling = auto|yes|no [CI]
Questo attributo specifica informazioni di scorrimento per la finestra del frame. Possibili valori
  • auto: questo valore dice all'interprete di fornire dispositivi di scorrimento per la finestra del frame quando necessario. Questo è il valore predefinito.
  • yes: questo valore dice all'interprete di fornire sempre dispositivi di scorrimento per la finestra del frame.
  • no: questo valore dice all'interprete di non fornire dispositivi di scorrimento per la finestra del frame.
frameborder = 1|0 [CN]
Questo attributo fornisce all'interprete informazioni sui bordi del frame. Valori possibili:
  • 1: Questo valore dice all'interprete di disegnare un separatore tra questo frame ed ogni frame adiacente. Questo è il valore predefinito.
  • 0: Questo valore dice all'interprete di non disegnare un separatore tra questo frame ed ogni frame adiacente. Si noti che i separatori possono essere disegnati tuttavia vicino a questo frame se specificato da altri frame.
marginwidth = pixels [CN]
Questo attributo specifica la quantità di spazio che deve essere lasciata tra il contenuto del frame nei suoi margini sinistro e destro. Il valore deve essere maggiore di un pixel. Il valore predefinito dipende dall'interprete.
marginheight = pixels [CN]
Questo attributo specifica la quantità di spazio che deve essere lasciata tra i contenuti del frame nei suoi margini superiore ed inferiore. Il valore deve essere maggiore di un pixel. Il valore predefinito dipende dall'interprete.

Attributi definiti altrove

L'elemento FRAME definisce i contenuti e l'aspetto di un singolo frame.

Impostare il contenuto iniziale di un frame 

L'attributo src specifica il documento iniziale che il frame conterrà.

Il documento HTML di esempio che segue:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "http://www.w3.org/TR/REC-html40/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Un documento frameset</TITLE>
</HEAD>
<FRAMESET cols="33%,33%,33%">
  <FRAMESET rows="*,200">
      <FRAME src="contenuti_del_frame1.html">
      <FRAME src="contenuti_del_frame2.gif">
  </FRAMESET>
  <FRAME src="contenuti_del_frame3.html">
  <FRAME src="contenuti_del_frame4.html">
</FRAMESET>
</HTML>

dovrebbe creare una configurazione dei frame simile a questa:

 ------------------------------------------
|Frame 1     |Frame 3       |Frame 4       |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
-------------|              |              |
|Frame 2     |              |              |
|            |              |              |
|            |              |              |
 ------------------------------------------

e far caricare all'interprete ciascun file in una visualizzazione separata.

I contenuti di un frame non devono trovarsi nello stesso documento che contiene la definizione del frame.

ESEMPIO ILLEGALE:
La definizione di un insieme di frame che segue non è HTML legale dal momento che i contenuti del secondo frame si trovano nello stesso documento in cui si trova l'insieme dei frame.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "http://www.w3.org/TR/REC-html40/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Un documento frameset</TITLE>
</HEAD>
<FRAMESET cols="50%,50%">
  <FRAME src="contenuti_del_frame1.html">
  <FRAME src="#ancoraggio_nello_stesso_documento">
  <NOFRAMES>
  ...del testo...
  <H2><A name="ancoraggio_nello_stesso_documento">Sezione importante</A></H2>
  ...del testo...
  </NOFRAMES>
</FRAMESET>
</HTML>

Presentazione visuale di un frame 

L'esempio seguente illustra l'uso degli attributi FRAME decorativi. Vi si specifica che il frame 1 non permetterà barre di scorrimento. Frame 2 lascerà spazio bianco intorno al suo contenuto (inizialmente, un file immagine) e il frame non sarà ridimensionabile. Nessun bordo sarà disegnato tra i frame 3 e 4. I bordi saranno disegnati (per impostazione predefinita) tra i frame 1, 2 e 3.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "http://www.w3.org/TR/REC-html40/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Un documento frameset</TITLE>
</HEAD>
<FRAMESET cols="33%,33%,33%">
  <FRAMESET rows="*,200">
      <FRAME src="contenuti_del_frame1.html" scrolling="no">
      <FRAME src="contenuti_del_frame2.gif" 
                marginwidth="10" marginheight="15"
                noresize>
  </FRAMESET>
  <FRAME src="contenuti_del_frame3.html" frameborder="0">
  <FRAME src="contenuti_del_frame4.html" frameborder="0">
</FRAMESET>
</HTML>

16.3 Specificare le informazioni dei frame di destinazione

Nota. Per informazioni sulla pratica corrente nel determinare la destinazione di un frame, si consultino le note relative ai frame nell'appendice.

Definizioni degli attributi

target = frame-target [CI]
Questo attributo specifica il nome di un frame in cui un documento deve essere aperto.
Assegnando un nome al frame attraverso l'attributo name, gli autori possono riferirsi ad esso come "destinazione" di collegamenti definiti da altri elementi. L'attributo target può essere impostato per elementi che creano collegamenti (A, LINK), mappe sensibili (AREA), e moduli (FORM).

Si consulti il paragrafo sui nomi dei frame di destinazione per informazioni sui nomi di frame riconosciuti.

Questo esempio illustra come le destinazioni permettono la modifica dinamica del contenuto del frame. Prima si definisce un insieme di frame nel documento frameset.html, mostrato qui:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "http://www.w3.org/TR/REC-html40/frameset.dtd">
<HTML>
<HEAD>
<TITLE>Un documento frameset</TITLE>
</HEAD>
<FRAMESET rows="50%,50%">
   <FRAME name="fixed" src="init_fixed.html">
   <FRAME name="dynamic" src="init_dynamic.html">
</FRAMESET>
</HTML>

Poi, in init_dynamic.html, ci si collega al frame chiamato "dynamic".

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
   "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Un documento con riferimenti con specifiche destinazioni</TITLE>
</HEAD>
<BODY>
...inizio del documento...
<P>Ora si può andare avanti a 
    <A href="slide2.html" target="dynamic">slide 2.</A>
...ulteriore documento...
<P>Te la stai cavando bene. Ora avanti a
    <A href="slide3.html" target="dynamic">slide 3.</A>
</BODY>
</HTML>

L'attivazione di entrambi i collegamenti apre un nuovo documento nel frame chiamato "dynamic" mentre l'altro frame, "fixed", mantiene il suo contenuto iniziale.

Nota. Una definizione frameset non cambia mai, ma può cambiare il contenuto di uno dei suoi frame. Una volta che il contenuto iniziale di un frame cambia, la definizione frameset non riflette più lo stato corrente dei suoi frame.

Non c'è attualmente nessun modo per codificare l'intero stato di un insieme di frame in un URI. Perciò, molti interpreti non permettono agli utenti di assegnare un segnalibro ad un insieme di frame.

I frameset possono rendere la navigazione in avanti e indietro, attraverso la "cronologia" dell' interprete, più difficile per l'utente .

16.3.1 Impostare la destinazione predefinita per i collegamenti

Quando molti collegamenti nello stesso documento designano la stessa destinazione, è possibile specificare la destinazione una volta e fare a meno dell'attributo target di ogni elemento. Questo viene fatto impostando l'attributo target dell'elemento BASE.

Ritorniamo all'esempio precedente, questa volta depositando le informazioni di destinazione, definendole nell'elemento BASE e rimuovendole dagli elementi A.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
   "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Un documento con BASE con una specifica destinazione</TITLE>
<BASE href="http://www.mycom.com/Slides" target="dynamic">
</HEAD>
<BODY>
...inizio del documento...
<P>Ora puoi andare avanti a <A href="slide2.html">slide 2.</A>
...ulteriore documento...
<P>Te la stai cavando bene. Ora vai avanti a 
       <A href="slide3.html">slide 3.</A>
</BODY>
</HTML>

16.3.2 Semantica della destinazione

Gli interpreti dovrebbero determinare il frame di destinazione nel quale caricare una risorsa collegata in base alle seguenti precedenze (in ordine decrescente di priorità):

  1. Se un elemento ha il suo attributo target impostato su un frame conosciuto, quando l'elemento è attivato (ad es., un collegamento viene seguito o un modulo processato), la risorsa designata dall'elemento dovrebbe essere caricata nel frame di destinazione.
  2. Se un elemento non ha l'attributo target impostato ma ce l'ha l'elemento BASE, l'attributo target dell'elemento BASE determina il frame.
  3. Se nè l'elemento nè l'elemento BASE si referiscono ad una destinazione, la risorsa designata dall'elemento dovrebbe venir caricata nel frame che contiene l'elemento.
  4. Se un qualsiasi attributo target si referisce ad un frame F sconosciuto, l'interprete dovrebbe creare una nuova finestra e frame, assegnare il nome F al frame, e caricare la risorsa designata dall'elemento nel nuovo frame.

Gli interpreti possono fornire agli utenti un meccanismo per sovrascrivere l'attributo target.

16.4 Contenuto alternativo

Gli autori dovrebbero fornire contenuto alternativo per quegli interpreti che non supportano frame o sono configurati per non visualizzarli.

16.4.1 L'elemento NOFRAMES

<![ %HTML.Frameset; [
<!ENTITY % noframes.content "(BODY) -(NOFRAMES)">
]]>
<!ENTITY % noframes.content "(%flow;)*">
<!ELEMENT NOFRAMES - - %noframes.content;
 -- contenitore del contenuto alternativo per presentazione non basata su frame -->
<!ATTLIST NOFRAMES
  %attrs;                              -- %coreattrs, %i18n, %events --
  >

L'elemento NOFRAMES specifica contenuto che dovrebbe essere visualizzato solo quando non vengono visualizzati i frame. Gli interpreti che supportano i frame devono solo visualizzare i contenuti di una dichiarazione NOFRAMES quando configurati per non visualizzare frame. Gli interpreti che non supportano frame devono visualizzare i contenuti del NOFRAMES in ogni caso.

Il NOFRAMES può essere usato nella sezione FRAMESET di un documento frameset.

Per esempio:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
     "http://www.w3.org/TR/REC-html40">
  <HTML>
  <HEAD>
  <TITLE>Un documento frameset con NOFRAMES</TITLE>
  </HEAD>
  <FRAMESET cols="50%, 50%">
     <FRAME src="principale.html">
     <FRAME src="sommario.html">
     <NOFRAMES>
     <P>Ecco la <A href="principale-noframes.html">
              versione del documento non basata su frame.</A> 
     </NOFRAMES>
  </FRAMESET>
  </HTML>

16.4.2 Descrizioni estese di frame

L'attributo longdesc permette agli autori di rendere i documenti del frame più accessibili alle persone che usano interpreti non visuali. Questo attributo designa una risorsa che fornisce una descrizione estesa del frame. Gli autori dovrebbero notare che descrizioni estese associate con i frame sono allegate al frame, non al contenuto del frame. Dal momento che il contenuto può variare nel tempo, è probabile che la descrizione estesa iniziale diventi inappropriata per i successivi contenuti del frame. In particolare, gli autori non dovrebbero includere un'immagine come solo contenuto di un frame.

Il seguente documento frameset descrive due frame. Il frame di sinistra contiene un sommario e il frame di destra inizialmente contiene l'immagine di uno struzzo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "http://www.w3.org/TR/REC-html40">
<HTML>
<HEAD>
<TITLE>Un documento frameset malamente progettato</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
   <FRAME src="sommario.html">
   <FRAME src="struzzo.gif" longdesc="descrizione-struzzo.html">
</FRAMESET>
</HTML>

Si noti che l'immagine è stata inclusa nel frame indipendentemente da qualsiasi elemento HTML, così l'autore non ha altri mezzi per specificare testo alternativo se non attraverso l'attributo longdesc. Se il contentuo del frame di destra cambia (ad es., l'utente seleziona un serpente a sonagli dal sommario), gli utenti non avranno accesso testuale al nuovo contenuto del frame.

Perciò, gli autori non dovrebbero mettere un'immagine direttamente in un frame. Invece, l'immagine dovrebbe essere specificata in un documento HTML separato, e li commentata con l'appropriato testo alternativo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"
   "http://www.w3.org/TR/REC-html40">
<HTML>
<HEAD>
<TITLE>Un documento frameset ben progettato</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
   <FRAME src="sommario.html">
   <FRAME src="contenitore-struzzo.html">
</FRAMESET>
</HTML>
<!-- In contenitore-struzzo.html: -->
<HTML>
<HEAD>
<TITLE>Il veloce e potente struzzo</TITLE>
</HEAD>
<P>
<OBJECT data="struzzo.gif" type="image/gif">
Questi struzzi hanno sicuramente un buon sapore!
</OBJECT>
</HTML>

16.5 Frame in linea: l'elemento IFRAME

<!ELEMENT IFRAME - - (%flow;)*         -- subfinestra in linea -->
<!ATTLIST IFRAME
  %coreattrs;                          -- id, class, style, title --
  longdesc    %URI;          #IMPLIED  -- collegamento a una descrizione estesa
                                          (complementa il titolo) --
  name        CDATA          #IMPLIED  -- nome del frame per la destinazione --
  src         %URI;          #IMPLIED  -- sorgente del contenuto del frame --
  frameborder (1|0)          1         -- richiesta bordi del frame? --
  marginwidth %Pixels;       #IMPLIED  -- ampiezza margini in pixel --
  marginheight %Pixels;      #IMPLIED  -- altezza margini in pixel --
  scrolling   (yes|no|auto)  auto      -- barra di scorrimento o no --
  align       %IAlign;       #IMPLIED  -- allineamento verticale o orizzontale --
  height      %Length;       #IMPLIED  -- altezza frame --
  width       %Length;       #IMPLIED  -- ampiezza frame --
  >

Definizioni degli attributi

longdesc = uri [CT]
Questo attributo specifica un collegamento ad una descrizione estesa del frame. Questa descrizione dovrebbe integrare la descrizione breve fornita usando l'attributo title, ed è particolarmente utile per interpreti non visuali.
name = cdata [CI]
Questo attributo assegna un nome al frame corrente. Questo nome può essere usato come destinazione di collegamenti successivi.
width = length [CN]
L'ampiezza del frame in linea.
height = length [CN]
L'altezza del frame in linea.

Attributi definiti altrove

L'elemento IFRAME permette agli autori di inserire un frame all'interno di un blocco di testo. Inserire un frame in linea all'interno di una sezione di testo è molto simile ad inserire un oggetto attraverso l'elemento OBJECT: entrambi permettono di inserire un documento HTML nel mezzo di un altro, essi possono entrambi essere allineati con testo circostante, ecc.

L'informazione da inserire in linea è indicata dall'attributo src di questo elemento. Il contenuto dell'elemento IFRAME, d'altra parte, dovrebbe essere visualizzato soltanto dagli interpreti che non supportano frame o sono configurati per non visualizzarli.

Per gli interpreti che supportano i frame, l'esempio seguente metterà un frame in linea circondato da un bordo nel mezzo del testo.

  <IFRAME src="foo.html" width="400" height="500"
             scrolling="auto" frameborder="1">
  [Il vostro interprete  non supporta i frame o è attualmente configurato
per non visualizzarli. Tuttavia, potete visitare
  <A href="foo.html">il relativo documento.</A>]
  </IFRAME>

I frame in linea non possono essere ridimensionati (e perciò, non accettano l'attributo noresize).

Nota. I documenti HTML possono anche essere incorporati in altri documenti HTML con l'elemento OBJECT. Si veda il paragrafo su documenti incorporati per i dettagli.