Почему фреймы не поддерживаются в HTML5, а не iFrames?

67

Почему фреймы не поддерживаются в HTML5, а не iFrames? В конце концов, между ними почти нет различий. Во многих случаях использование любого из них даст одинаковый результат (простите, если я ошибаюсь)?

Рок Марти
источник
спасибо за ссылку, но какая небольшая разница между ними в том, что фреймы не устарели.
1
Потому что фреймы были ужасной идеей с самого начала, но у фреймов есть несколько законных вариантов использования?
GordonM
Переполнение стека: « Кадры устарели в HTML5, но не в iFrames »
WBT

Ответы:

81

В вашем посте есть несколько заблуждений. Во- первых, frameи framesetэлементы не осуждается в HTML5, они устарели (т.е. они были полностью удалены).

Во- вторых, frameи framesetэлементы не то же самое , как iframeэлемент, они не дают одинаковый результат:

  • framesetЭлемент заменяет элемент тела в страницах в качестве средства для включения в другую модель документа для веб - страниц: они плохо для удобства и доступности, а также то , что они намеревались достичь, были полностью заменены CSS и развития повсеместной на стороне сервера.

  • iframeЭлемент, с другой стороны, не заменяет тело страницы. Он действует как средство для включения нового контекста просмотра, встроенного в блок контента. Он не страдает от тех же проблем с юзабилити или доступностью, что и модель набора фреймов, и используется практически везде, где необходимо включить встроенный контекст просмотра (виджеты являются наиболее плодотворным примером). 1

В iframeHTML5 также предусмотрены дополнительные функции, заключающиеся в том, что он может быть изолированным , позволяя родительскому документу решать, что будет выполнено в нем. Это обеспечивает некоторую степень безопасности для родительского документа (и посетителей родительского документа) при встраивании ненадежного контента.


Примечания

Примечание 1:object элемент несколько перекрывается с iframeэлементом, но имеет другую модель содержания (которая предназначена в основном для плагинов), имеет свой собственный набор предостережений, и не имеет песочницу атрибуты iframeэлемент имеет.


источник
8
Почему элементы набора фреймов плохо подходят для «удобства использования» и «доступности», а элементы iframe - нет?
меритон - забастовка
18
@meriton Frameset создает страницу из нескольких документов с одинаковым приоритетом: это создает проблемы для программ чтения с экрана, которые не знают, на каком документе сосредоточиться в конкретный момент времени. Элементы iframe, с другой стороны, просто встраиваются в одну страницу: это ничем не отличается от наличия встроенного изображения.
9
Проблемы для программ чтения с экрана: все слепые люди, с которыми я говорил, сказали, что они предпочитают, чтобы навигация застряла в отдельном кадре (а не в iFrame), потому что они могут игнорировать ее и читать ее только тогда, когда захотят. Настоящим виновником программ чтения с экрана являются Javascript и AJAX, которые делают страницы совершенно непригодными для использования с современными программами чтения с экрана (ну, моей информации около 10 месяцев). Мой личный опыт работы с программами чтения с экрана подтверждает это.
ГленПетерсон
4
Мне было интересно, не было ли запоздалого обновления часто цитируемых утверждений о доступности в 2005 году. Спасибо за инакомыслие по этому поводу.
Эрик Реппен
1
@GlenPeterson тот же эффект без элемента frame может быть достигнут с помощью CSS, чтобы сделать элемент block фиксированным в области просмотра. Вот как это должно быть сделано, если вы хотите такую ​​навигацию. Это имеет больше смысла.
netrox
8

Рамки (frameset) действует как документ. Он удален, потому что нарушает структуру HTML-документов и навигацию. Например. у вас есть ссылки в одном фрейме, контент в другом, вы не можете открыть ссылку со страницы в новом окне, вы не можете ссылаться на определенную подстраницу и т. д.

С другой стороны, iframes ничего не сломает, если используется правильно, потому что они предназначены для содержимого песочницы (например, рекламы).

Slawek
источник
7

Наборы фреймов часто используются таким образом, что они нарушают фундаментальный принцип Интернета - каждый документ имеет один URL. Это приводит к проблемам со ссылками, закладками, поисковыми системами и т. Д.

Типичное использование набора фреймов - это рамка сверху с логотипом или заголовком, рамка сбоку с меню и рамка контента. Но поисковые системы индексируют отдельные страницы, поэтому, когда вы найдете какую-либо страницу в Google, она будет ссылаться непосредственно на страницу контента без набора фреймов, и вы потеряете навигацию. Проблема со ссылками и закладками заключается в том, что вы обычно хотите связать или добавить в закладки определенную страницу содержимого внутри набора фреймов, не теряя сам набор фреймов. Это не простой способ сделать это.

Во-первых, фреймы стали популярными, потому что они позволили статически позиционировать заголовок и меню с прокручиваемой областью содержимого. Но это может быть достигнуто гораздо проще с помощью CSS сегодня. Кроме того, фреймы позволили вам использовать общие элементы, такие как логотипы и меню, на нескольких страницах без какого-либо кодирования на стороне сервера. Это было преимуществом в то время, когда кодирование на стороне сервера было утомительным и подверженным ошибкам (например, CGI-скрипты), а многие хосты вообще не допускали сценарии на стороне сервера. Сегодня с системами управления контентом (CMS) и лучшими серверными платформами, это намного лучше обрабатывается на стороне сервера.

Таким образом, в основном нет никаких преимуществ в использовании набора фреймов, просто много проблем.

IFrames можно использовать так же, как и наборы кадров , и в этом случае они также приводят к тем же проблемам. Но есть также много законных применений iframe, которые не приводят к тем же самым проблемам.

JacquesB
источник