Когда я должен использовать фреймы HTML? - PullRequest
20 голосов
/ 16 сентября 2010

Я слышал бесчисленные причины того, почему не следует использовать фреймы HTML, из-за их недостаточной доступности, общего недостатка в UX, их полной неэффективности / невозможности обслуживания или просто устаревших.

Все это приноситОтвечу на два вопроса:

  1. Применим ли этот общий консенсус ненависти и к iframes?
  2. В каких сценариях допустимо использование фреймов / фреймов в вашем коде?

Ответы [ 4 ]

13 голосов
/ 16 сентября 2010

(1) Не по своей сути. У iframes есть много вариантов использования, которые не страдают от проблем с фреймами. Они полезны в любое время, когда вы хотите смешать документ из другого контекста безопасности или без сценариев и стилей, которые использует родительская страница.

Однако, можно «использовать в качестве фрейма в виде фрейма»: разделить страницу на отдельные области фрейма, с перекрестными ссылками на фреймы, создающими навигационный беспорядок, который плохо воспроизводится с закладками, открытием в новой вкладке и т. д.

(2) Я бы сегодня ни за что не использовал кадры. Был ограниченный случай использования для них хранения большого количества содержимого страницы, которое вы не хотите загружать при каждой навигации. Но сейчас мы бы просто использовали XMLHttpRequest для обновления части страницы.

Несмотря на это, не обращая внимания на то, чтобы сделать ссылки на изменения страниц доступными (используя хеш-историю и наличие аналога статической ссылки для каждой хеш-ссылки, связанной с реальными <a> s, которые отвечают на нажатие средней кнопкой мыши и др.) , страница, которая обновляется / перемещается сама по себе с помощью XMLHttpRequest, воссоздает многие навигационные проблемы фреймов с очень негативными последствиями для удобства использования, доступности и SEO.

Мне немного грустно, что многие авторы создают роскошные, модные, «современные» анимированные веб-сайты, которые, наивно используя jQuery load() или аналогичные сами по себе, демонстрируют все худшее поведение древних, ненавистных фреймов.

4 голосов
/ 16 сентября 2010

(1) Нет. Существуют законные варианты использования фреймов, где сегодня нет смысла использовать фреймы в современных браузерах.

(2) Никогда не используйте рамки; Существуют и другие, более простые решения для достижения того же эффекта.

Используйте iframes только тогда, когда встраивание всего сайта является наиболее логичным вариантом. Хотя это бывает редко, бывают случаи, когда это имеет смысл.

Короче говоря, есть причина, по которой теги frame / frameset / noframe извлекаются из HTML5, но iframe переносится.

(пример) Если сайт A обязан включить страницу с сайта B (прокси, по-видимому, пришедшую с сайта A), то сайт B css и javascript могут и обычно будут полностью содержать сайт A. Это законная причина.

1 голос
/ 27 июня 2017

Вы можете использовать iframe для предоставления доступа к объявлениям третьих лиц на вашем веб-сайте, не предоставляя им никакого дополнительного контроля или обмена сообщениями с родительским документом, содержащим iframe.ваш сайт, но в то же время защищен от атак с неизвестных ресурсов

Страницы разработчика Mozilla объясняют это лучше :

Элемент HTML представляет собой вложенный контекст просмотраэффективно встраивая другую HTML-страницу в текущую страницу.

1 голос
/ 18 сентября 2012

Если по какой-то причине у вас есть «вложенная форма».

Допустим, у вас есть форма для редактирования продукта, а внутри этой области есть область с другой формой, которая, скажем, позволяет вам ввести список клиентов, которые отправляют рассылку об этом продукте.

Клиенты не имеют отношения к продукту вообще и не имеют отношения к продукту в базе данных. Они соответствуют отдельным объектам от продукта.

В этом случае я помещаю IFrame в форму добавления клиента и нажимаю кнопку отправки, которая отправляет форму внутри IFrame.

Я не нашел лучшего способа реализации описанного сценария, чем использование IFrame. И да, у меня есть требование, чтобы обе формы были на одной странице, и форму для новостной рассылки следует размещать внутри формы редактирования продукта. Бизнес-потребности продиктованы начальством.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...