W3docs

Tag HTML <noframes>

Il tag <noframes> contiene un testo alternativo per i browser che non supportano i frame. Vedi esempi

Il tag <noframes> definiva il contenuto di riserva mostrato quando un browser non riusciva a renderizzare un frameset. Insieme a <frameset> e <frame>, faceva parte del vecchio modello "frames" per suddividere la finestra del browser in più documenti indipendenti.

Pericolo

Non utilizzare <noframes>, <frameset> o <frame> in nuovi progetti. Sono stati deprecati in HTML5 (2014) e da allora i browser moderni li hanno abbandonati. Questa pagina è mantenuta solo come riferimento — per leggere o mantenere codice legacy, non per scrivere nuovo markup.

Questa pagina spiega cosa faceva <noframes>, perché non esiste più e cosa usare al suo posto.

A cosa serviva <noframes>

Nell'era dei frame, una pagina era suddivisa in diverse aree, ognuna delle quali caricava il proprio documento HTML. Alcuni browser delle prime generazioni (e molti screen reader) non erano in grado di visualizzare i frame. L'elemento <noframes> offriva a quegli utenti un'alternativa:

  • Un breve messaggio come "Il tuo browser non supporta i frame."
  • Un collegamento a una versione del sito senza frameset (singola pagina).
  • Qualsiasi contenuto a livello di <body> come fallback utilizzabile.

Se il browser supportava i frame, il contenuto di <noframes> veniva ignorato. L'elemento era annidato all'interno di <frameset>, che a sua volta sostituiva il <body> della pagina.

Perché i frame sono obsoleti

I frame hanno causato problemi gravi e ben noti che hanno portato alla loro rimozione:

  • Segnalibri e URL non funzionanti — la barra degli indirizzi mostrava l'URL del frameset, non il documento che l'utente stava effettivamente visualizzando, quindi link e segnalibri puntavano al posto sbagliato.
  • Scarsa accessibilità — gli screen reader faticavano a gestire più documenti indipendenti in un'unica finestra.
  • Danno alla SEO — i motori di ricerca indicizzavano i singoli documenti dei frame fuori contesto, senza la navigazione circostante.
  • Nessuna responsività — le dimensioni fisse dei frame non si adattavano agli schermi mobile.

Per queste ragioni, l'intero modello dei frame — e con esso <noframes> — è stato rimosso dallo standard HTML.

Cosa usare al suo posto

Non è necessario utilizzare frame o un elemento di fallback. HTML e CSS moderni coprono ogni caso d'uso che i frame servivano un tempo:

  • Layout di pagina — costruisci colonne, barre laterali e intestazioni con normali elementi HTML e CSS Flexbox o Grid invece di dividere la finestra in aree frame.
  • Incorporare un altro documento — usa l'elemento <iframe> per incorporare una pagina (una mappa, un video o un widget esterno) all'interno di un'altra. A differenza di <frameset>, <iframe> è completamente supportato e non compromette l'URL della pagina.
  • Intestazione/piè di pagina/navigazione condivisi — invece di caricare un frame di navigazione una sola volta, renderizza il markup condiviso con un motore di template, un generatore di siti statici o un componente JavaScript.
Informazione

L'elemento <iframe> è l'unico tag "simile a un frame" ancora parte dell'HTML. Se il tuo obiettivo è incorporare contenuti esterni, usa <iframe> — non <frameset>.

Sintassi

Il tag <noframes> funzionava a coppie. Il contenuto veniva scritto tra i tag di apertura (<noframes>) e chiusura (</noframes>), all'interno di un <frameset>.

Esempio del tag HTML <noframes> (legacy, solo per riferimento):

Tag HTML <noframes>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <frameset cols="50%,50%">
    <frame src="https://www.w3docs.com/learn-html.html">
    <noframes>Sorry, your browser doesn’t support frames. </noframes>
  </frameset>
</html>

In un browser dell'epoca con supporto per i frame, questo avrebbe diviso la finestra in due colonne. Oggi i browser ignorano gli elementi <frameset> e <frame>, quindi la pagina viene renderizzata come se fosse vuota — il che è esattamente il motivo per cui questo markup non dovrebbe mai essere utilizzato in un nuovo progetto.

Supporto dei browser

Rimosso. Il supporto per i frame è stato eliminato dai browser moderni. Non esiste alcuna versione di Chrome, Firefox, Safari o Edge in cui scrivere <frameset> / <frame> / <noframes> produca frame funzionanti. Gli elementi non fanno parte dell'attuale standard HTML e i validatori li segnalano come obsoleti. Trattali come una funzionalità storica senza prospettive future.

Attributi

Il tag <noframes> utilizzava solo gli Attributi Globali. Come l'elemento stesso, sono obsoleti in questo contesto.

Esercitazione

Pratica
Qual era lo scopo originale del tag <noframes> nell'HTML legacy?
Qual era lo scopo originale del tag <noframes> nell'HTML legacy?
Was this page helpful?