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> поддерживал только глобальные атрибуты. Как и сам элемент, они устарели в данном контексте.