W3docs

HTML тег <noframes>

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

Тег <noframes> определял резервное содержимое, которое отображалось, когда браузер не мог отобразить набор фреймов. Вместе с <frameset> и <frame> он входил в устаревшую модель «фреймов», разбивавшую окно браузера на несколько независимых документов.

Опасно

Не используйте <noframes>, <frameset> и <frame> в новых проектах. Они были устаревшими в HTML5 (2014) и с тех пор исключены из современных браузеров. Эта страница сохранена только для справки — для чтения и поддержки устаревшего кода, но не для написания нового разметки.

На этой странице объясняется, для чего предназначался <noframes>, почему он устарел и что использовать вместо него.

Для чего использовался <noframes>

В эпоху фреймов страница делилась на несколько областей, каждая из которых загружала собственный HTML-документ. Некоторые ранние браузеры (и многие программы чтения с экрана) вообще не умели отображать фреймы. Элемент <noframes> предлагал таким пользователям альтернативу:

  • Короткое сообщение, например: «Ваш браузер не поддерживает фреймы.»
  • Ссылка на версию сайта без фреймов (одностраничную).
  • Любое содержимое уровня <body> в качестве полноценного резервного варианта.

Если браузер поддерживал фреймы, содержимое <noframes> игнорировалось. Элемент вкладывался внутрь <frameset>, который, в свою очередь, заменял <body> страницы.

Почему фреймы устарели

Фреймы порождали серьёзные, хорошо известные проблемы, которые и привели к их удалению:

  • Неработающие закладки и URL — адресная строка отображала URL набора фреймов, а не документа, который пользователь фактически просматривал, поэтому ссылки и закладки указывали не туда.
  • Плохая доступность — программам чтения с экрана было трудно передать несколько независимых документов в одном окне.
  • Ущерб для SEO — поисковые системы индексировали отдельные документы фреймов вне контекста, без окружающей навигации.
  • Отсутствие адаптивности — фиксированные размеры фреймов не подстраивались под мобильные экраны.

По этим причинам вся модель фреймов — вместе с <noframes> — была исключена из стандарта HTML.

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

Фреймы и резервный элемент больше не нужны. Современный HTML и CSS охватывают все задачи, которые когда-то решали фреймы:

  • Макет страницы — создавайте колонки, боковые панели и заголовки с помощью обычных HTML-элементов и CSS Flexbox или Grid, а не разделяйте окно на области фреймов.
  • Встраивание другого документа — используйте элемент <iframe> для встраивания одной страницы (карты, видео или внешнего виджета) внутрь другой. В отличие от <frameset>, <iframe> полностью поддерживается и не нарушает URL страницы.
  • Общие заголовок/подвал/навигация — вместо загрузки навигационного фрейма один раз выводите общую разметку с помощью шаблонизатора, генератора статических сайтов или JavaScript-компонента.
Информация

Элемент <iframe> — единственный «фреймоподобный» тег, который до сих пор входит в HTML. Если вам нужно встроить внешнее содержимое, используйте <iframe>, а не <frameset>.

Синтаксис

Тег <noframes> использовался парно. Содержимое записывалось между открывающим (<noframes>) и закрывающим (</noframes>) тегами внутри <frameset>.

Пример HTML-тега <noframes> (устаревший, только для справки):

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>

В браузере с поддержкой фреймов того времени окно было бы разделено на два столбца. Сегодня браузеры игнорируют элементы <frameset> и <frame>, поэтому страница отображается как пустая — именно по этой причине такую разметку никогда не следует использовать в новых проектах.

Поддержка браузерами

Удалено. Поддержка фреймов исключена из современных браузеров. Не существует версии Chrome, Firefox, Safari или Edge, в которой запись <frameset> / <frame> / <noframes> создавала бы работающие фреймы. Эти элементы не входят в текущий стандарт HTML, а валидаторы помечают их как устаревшие. Воспринимайте их как историческую особенность без перспектив применения.

Атрибуты

Тег <noframes> поддерживал только глобальные атрибуты. Как и сам элемент, они устарели в данном контексте.

Практика

Практика
Какова была первоначальная цель тега <noframes> в устаревшем HTML?
Какова была первоначальная цель тега <noframes> в устаревшем HTML?
Was this page helpful?