W3docs

HTML тег <plaintext>

Содержимое тега <plaintext> отображается как обычный текст без форматирования. Описание тега и примеры использования.

Тег <plaintext> указывает браузеру отображать всё, что следует за ним, как обычный текст без какого-либо HTML-форматирования. Когда парсер встречает этот тег, он переключается в режим необработанного текста и трактует всё последующее содержимое документа как простой текст, игнорируя все теги, которые идут за ним.

Опасно

Устаревший — никогда не используйте <plaintext>. Он устарел ещё в HTML2 и не является частью ни одного современного стандарта HTML. Браузеры по-прежнему отрисовывают его только из соображений обратной совместимости, а его поведение необратимо разрушительно (см. ниже). Для отображения буквального текста используйте вместо него <pre> и/или <code>.

Почему <plaintext> необратимо опасен

Главная особенность <plaintext> состоит в том, что у него нет закрывающего тега. Браузер не воспринимает никакой </plaintext>. Как только парсер входит в <plaintext>, он поглощает остаток документа как буквальный текст — включая всю разметку, следующую за тегом, вплоть до конца файла:

  • Всё, что идёт после <plaintext>, отображается как необработанный текст, поэтому весь реальный HTML, написанный после него (абзацы, скрипты, стили), выводится в виде исходного кода, а не отрисовывается.
  • Закрывающие теги </body> и </html> также поглощаются как текст, поэтому документ никогда не закрывается корректно.
  • Отключить его невозможно. Не существует способа выйти из режима простого текста после его активации, поэтому один тег <plaintext> способен сломать всю страницу.

По этим причинам <plaintext> следует воспринимать как артефакт, который можно встретить в старом коде, но не как инструмент для использования.

Опасно

Если бы <plaintext> был первым элементом на странице, весь ответ документа обрабатывался бы как простой текст. В такой ситуации правильным решением является передача файла с MIME-типом text/plain MIME-type, а не использование этого тега.

Что использовать вместо него

Чтобы безопасно отображать буквальный текст или код, сочетайте <pre> (который сохраняет пробелы и переносы строк) с <code> (который помечает текст как код) и экранируйте символы, имеющие специальное значение в HTML: пишите &lt; вместо <, &gt; вместо > и &amp; вместо &. Экранирование — это то, что заставляет угловые скобки отображаться как текст, а не интерпретироваться как теги.

<!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>

В отличие от <plaintext>, тег <pre> имеет правильный закрывающий тег (</pre>), поэтому область буквального текста заканчивается именно там, где нужно, и остальная часть страницы отрисовывается нормально. Также можно применить моноширинный шрифт к любому HTML-элементу с помощью свойства CSS font-family и значения monospace.

Для исторического контекста: тег <xmp> — ещё один устаревший способ отображения буквального текста; как и <plaintext>, его не следует использовать. Ознакомьтесь с полным списком устаревших HTML-тегов, которых следует избегать.

Синтаксис

Тег <plaintext> не является пустым элементом, однако его закрывающий тег запрещён — </plaintext> не существует. HTML-парсер прекращает интерпретировать разметку в момент обнаружения открывающего тега и поглощает остаток документа как простой текст.

Пример 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>

Результат

plaintext tag example

Атрибуты

Тег <plaintext> поддерживает глобальные атрибуты.

Практика

Практика
Что происходит, когда браузер встречает тег <plaintext>?
Что происходит, когда браузер встречает тег <plaintext>?
Was this page helpful?