W3docs

Tag HTML <plaintext>

Il tag <plaintext> mostra il contenuto come testo normale senza formattazione. Descrizione e esempi d'uso.

Il tag <plaintext> indica al browser di visualizzare tutto ciò che lo segue come testo normale, senza alcuna formattazione HTML. Quando il parser incontra questo tag, passa alla modalità testo grezzo e tratta tutto il contenuto successivo del documento come testo normale, ignorando ogni tag che segue.

Pericolo

Deprecato — non usare mai <plaintext>. È obsoleto fin da HTML2 e non fa parte di alcuno standard HTML moderno. I browser continuano a interpretarlo solo per compatibilità con le versioni precedenti, ma il suo comportamento è irreversibilmente distruttivo (vedi sotto). Per visualizzare testo letterale, usa invece <pre> e/o <code>.

Perché <plaintext> è irreversibilmente pericoloso

Il fatto critico riguardo a <plaintext> è che non ha un tag di chiusura. Non esiste un </plaintext> che il browser riconosca. Una volta che il parser entra in <plaintext>, consuma il resto del documento come testo letterale — compreso qualsiasi markup che lo segue, fino alla fine del file:

  • Tutto ciò che viene dopo <plaintext> è mostrato come testo grezzo, quindi qualsiasi HTML reale scritto dopo di esso (paragrafi, script, stili) viene visualizzato come sorgente anziché essere renderizzato.
  • Anche i tag di chiusura </body> e </html> vengono inghiottiti come testo, quindi il documento non si chiude correttamente.
  • Non è possibile "disattivarlo". Non esiste alcun modo per uscire dalla modalità testo normale una volta iniziata, ed è per questo che un singolo <plaintext> può rompere un'intera pagina.

Per queste ragioni <plaintext> dovrebbe essere considerato un reperto da riconoscere nel codice vecchio, non uno strumento da utilizzare.

Pericolo

Se <plaintext> fosse il primo elemento della pagina, l'intera risposta del documento verrebbe trattata come testo normale. In quella situazione, l'approccio corretto è servire il file con il MIME-type text/plain — non questo tag.

Cosa usare al suo posto

Per visualizzare in modo sicuro testo letterale o codice, combina <pre> (che preserva gli spazi bianchi e le interruzioni di riga) con <code> (che contrassegna il testo come codice), ed esegui l'escape dei caratteri con significato speciale in HTML: scrivi &lt; per <, &gt; per > e &amp; per &. L'escape è ciò che fa sì che le parentesi angolari vengano mostrate come testo anziché essere interpretate come tag.

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <p>The code below is shown as literal text:</p>
    <pre><code>&lt;h1&gt;Main title of the document&lt;/h1&gt;
&lt;p&gt;First paragraph of the text&lt;/p&gt;
&lt;h2&gt;Subheading&lt;/h2&gt;</code></pre>
  </body>
</html>

A differenza di <plaintext>, <pre> ha un tag di chiusura corretto (</pre>), quindi la regione di testo letterale termina esattamente dove si desidera e il resto della pagina viene renderizzato normalmente. È anche possibile applicare un font monospaziato a qualsiasi elemento HTML tramite la proprietà CSS font-family con il valore generico monospace.

Per contesto storico, il tag <xmp> è un altro modo deprecato per mostrare testo letterale; come <plaintext>, non dovrebbe essere utilizzato. Consulta l'elenco completo dei tag HTML deprecati da evitare.

Sintassi

Il tag <plaintext> non è un elemento vuoto, ma il suo tag di chiusura è vietato — non esiste </plaintext>. Il parser HTML smette di interpretare il markup nel momento in cui incontra il tag di apertura, consumando il resto del documento come testo normale.

Esempio del tag HTML <plaintext>:

<!DOCTYPE html>
<html>
 <head>
    <title>Title of the document</title>
 </head>
  <body>
    <p>The tag content looks like this:</p>
    <plaintext>
    <h1>Main title of the document</h1>
    <p>First paragraph of the text</p>
    <h2>Subheading</h2>
  </body>
</html>

Risultato

esempio del tag plaintext

Attributi

Il tag <plaintext> supporta gli Attributi Globali.

Esercitazione

Pratica
Cosa succede quando il browser incontra il tag <plaintext>?
Cosa succede quando il browser incontra il tag <plaintext>?
Was this page helpful?