Почему фреймы не поддерживаются в HTML5, а не iFrames?
67
Почему фреймы не поддерживаются в HTML5, а не iFrames? В конце концов, между ними почти нет различий. Во многих случаях использование любого из них даст одинаковый результат (простите, если я ошибаюсь)?
В вашем посте есть несколько заблуждений. Во- первых, frameи framesetэлементы не осуждается в HTML5, они устарели (т.е. они были полностью удалены).
Во- вторых, frameи framesetэлементы не то же самое , как iframeэлемент, они не дают одинаковый результат:
framesetЭлемент заменяет элемент тела в страницах в качестве средства для включения в другую модель документа для веб - страниц: они плохо для удобства и доступности, а также то , что они намеревались достичь, были полностью заменены CSS и развития повсеместной на стороне сервера.
iframeЭлемент, с другой стороны, не заменяет тело страницы. Он действует как средство для включения нового контекста просмотра, встроенного в блок контента. Он не страдает от тех же проблем с юзабилити или доступностью, что и модель набора фреймов, и используется практически везде, где необходимо включить встроенный контекст просмотра (виджеты являются наиболее плодотворным примером). 1
В iframeHTML5 также предусмотрены дополнительные функции, заключающиеся в том, что он может быть изолированным , позволяя родительскому документу решать, что будет выполнено в нем. Это обеспечивает некоторую степень безопасности для родительского документа (и посетителей родительского документа) при встраивании ненадежного контента.
Примечания
Примечание 1:object элемент несколько перекрывается с iframeэлементом, но имеет другую модель содержания (которая предназначена в основном для плагинов), имеет свой собственный набор предостережений, и не имеет песочницу атрибуты iframeэлемент имеет.
Почему элементы набора фреймов плохо подходят для «удобства использования» и «доступности», а элементы iframe - нет?
меритон - забастовка
18
@meriton Frameset создает страницу из нескольких документов с одинаковым приоритетом: это создает проблемы для программ чтения с экрана, которые не знают, на каком документе сосредоточиться в конкретный момент времени. Элементы iframe, с другой стороны, просто встраиваются в одну страницу: это ничем не отличается от наличия встроенного изображения.
9
Проблемы для программ чтения с экрана: все слепые люди, с которыми я говорил, сказали, что они предпочитают, чтобы навигация застряла в отдельном кадре (а не в iFrame), потому что они могут игнорировать ее и читать ее только тогда, когда захотят. Настоящим виновником программ чтения с экрана являются Javascript и AJAX, которые делают страницы совершенно непригодными для использования с современными программами чтения с экрана (ну, моей информации около 10 месяцев). Мой личный опыт работы с программами чтения с экрана подтверждает это.
ГленПетерсон
4
Мне было интересно, не было ли запоздалого обновления часто цитируемых утверждений о доступности в 2005 году. Спасибо за инакомыслие по этому поводу.
Эрик Реппен
1
@GlenPeterson тот же эффект без элемента frame может быть достигнут с помощью CSS, чтобы сделать элемент block фиксированным в области просмотра. Вот как это должно быть сделано, если вы хотите такую навигацию. Это имеет больше смысла.
netrox
8
Рамки (frameset) действует как документ. Он удален, потому что нарушает структуру HTML-документов и навигацию. Например. у вас есть ссылки в одном фрейме, контент в другом, вы не можете открыть ссылку со страницы в новом окне, вы не можете ссылаться на определенную подстраницу и т. д.
С другой стороны, iframes ничего не сломает, если используется правильно, потому что они предназначены для содержимого песочницы (например, рекламы).
Наборы фреймов часто используются таким образом, что они нарушают фундаментальный принцип Интернета - каждый документ имеет один URL. Это приводит к проблемам со ссылками, закладками, поисковыми системами и т. Д.
Типичное использование набора фреймов - это рамка сверху с логотипом или заголовком, рамка сбоку с меню и рамка контента. Но поисковые системы индексируют отдельные страницы, поэтому, когда вы найдете какую-либо страницу в Google, она будет ссылаться непосредственно на страницу контента без набора фреймов, и вы потеряете навигацию. Проблема со ссылками и закладками заключается в том, что вы обычно хотите связать или добавить в закладки определенную страницу содержимого внутри набора фреймов, не теряя сам набор фреймов. Это не простой способ сделать это.
Во-первых, фреймы стали популярными, потому что они позволили статически позиционировать заголовок и меню с прокручиваемой областью содержимого. Но это может быть достигнуто гораздо проще с помощью CSS сегодня. Кроме того, фреймы позволили вам использовать общие элементы, такие как логотипы и меню, на нескольких страницах без какого-либо кодирования на стороне сервера. Это было преимуществом в то время, когда кодирование на стороне сервера было утомительным и подверженным ошибкам (например, CGI-скрипты), а многие хосты вообще не допускали сценарии на стороне сервера. Сегодня с системами управления контентом (CMS) и лучшими серверными платформами, это намного лучше обрабатывается на стороне сервера.
Таким образом, в основном нет никаких преимуществ в использовании набора фреймов, просто много проблем.
IFrames можно использовать так же, как и наборы кадров , и в этом случае они также приводят к тем же проблемам. Но есть также много законных применений iframe, которые не приводят к тем же самым проблемам.
Ответы:
В вашем посте есть несколько заблуждений. Во- первых,
frame
иframeset
элементы не осуждается в HTML5, они устарели (т.е. они были полностью удалены).Во- вторых,
frame
иframeset
элементы не то же самое , какiframe
элемент, они не дают одинаковый результат:frameset
Элемент заменяет элемент тела в страницах в качестве средства для включения в другую модель документа для веб - страниц: они плохо для удобства и доступности, а также то , что они намеревались достичь, были полностью заменены CSS и развития повсеместной на стороне сервера.iframe
Элемент, с другой стороны, не заменяет тело страницы. Он действует как средство для включения нового контекста просмотра, встроенного в блок контента. Он не страдает от тех же проблем с юзабилити или доступностью, что и модель набора фреймов, и используется практически везде, где необходимо включить встроенный контекст просмотра (виджеты являются наиболее плодотворным примером). 1В
iframe
HTML5 также предусмотрены дополнительные функции, заключающиеся в том, что он может быть изолированным , позволяя родительскому документу решать, что будет выполнено в нем. Это обеспечивает некоторую степень безопасности для родительского документа (и посетителей родительского документа) при встраивании ненадежного контента.Примечания
Примечание 1:
object
элемент несколько перекрывается сiframe
элементом, но имеет другую модель содержания (которая предназначена в основном для плагинов), имеет свой собственный набор предостережений, и не имеет песочницу атрибутыiframe
элемент имеет.источник
Рамки (frameset) действует как документ. Он удален, потому что нарушает структуру HTML-документов и навигацию. Например. у вас есть ссылки в одном фрейме, контент в другом, вы не можете открыть ссылку со страницы в новом окне, вы не можете ссылаться на определенную подстраницу и т. д.
С другой стороны, iframes ничего не сломает, если используется правильно, потому что они предназначены для содержимого песочницы (например, рекламы).
источник
Наборы фреймов часто используются таким образом, что они нарушают фундаментальный принцип Интернета - каждый документ имеет один URL. Это приводит к проблемам со ссылками, закладками, поисковыми системами и т. Д.
Типичное использование набора фреймов - это рамка сверху с логотипом или заголовком, рамка сбоку с меню и рамка контента. Но поисковые системы индексируют отдельные страницы, поэтому, когда вы найдете какую-либо страницу в Google, она будет ссылаться непосредственно на страницу контента без набора фреймов, и вы потеряете навигацию. Проблема со ссылками и закладками заключается в том, что вы обычно хотите связать или добавить в закладки определенную страницу содержимого внутри набора фреймов, не теряя сам набор фреймов. Это не простой способ сделать это.
Во-первых, фреймы стали популярными, потому что они позволили статически позиционировать заголовок и меню с прокручиваемой областью содержимого. Но это может быть достигнуто гораздо проще с помощью CSS сегодня. Кроме того, фреймы позволили вам использовать общие элементы, такие как логотипы и меню, на нескольких страницах без какого-либо кодирования на стороне сервера. Это было преимуществом в то время, когда кодирование на стороне сервера было утомительным и подверженным ошибкам (например, CGI-скрипты), а многие хосты вообще не допускали сценарии на стороне сервера. Сегодня с системами управления контентом (CMS) и лучшими серверными платформами, это намного лучше обрабатывается на стороне сервера.
Таким образом, в основном нет никаких преимуществ в использовании набора фреймов, просто много проблем.
IFrames можно использовать так же, как и наборы кадров , и в этом случае они также приводят к тем же проблемам. Но есть также много законных применений iframe, которые не приводят к тем же самым проблемам.
источник