Являются ли IFrames (HTML) устаревшими?

Получая противоречивые сообщения об этом, надеюсь, что это не так. Я не могу себе представить, что поддержка этого прекратится, поскольку их используют сайты gazillion.

Некоторые дополнительные вопросы по этому поводу:

  • Зачем им отменять этот тег?
  • Любая альтернатива для этого?

Ответ 1

В моем мнении W3C подпрыгнул пистолет в демпинговых фреймах из доктрины Strict HTML и XHTML. В теории вы бы использовали элемент <object> для добавления посторонних объектов в свой документ, но различия и ограничения браузера сделали это не стартером для многих разработчиков. С гораздо более прагматичным HTML 5 (который все еще является черновиком) iframes вернулись и даже имеют два новых атрибута: seamless и интригующий sandbox.

Ответ 2

Поддержка <iframe> все еще существует в HTML 5, поэтому я не думаю, что это изменится в ближайшем будущем.

Чтобы ответить на другие вопросы:

  • <iframe> (как кадры вообще) большую часть времени не являются удобными для пользователя:
    • Они не позволяют легко получить доступ к содержимому в кадре через URL (не теряя при этом контент за пределами рамки).
    • Большинство пользователей "технофобии" раздражаются кадрами.
    • Насколько я знаю, они медленнее отрисовывают для браузеров.
  • Альтернативы включают динамическое создание страниц (SSI, PHP, Rails и т.д.) и использование JavaScript/AJAX для изменения содержимого, например. a <div>

Чтобы быть ясным: я говорю о <iframe> как элемент интерфейса. Не скрытый элемент для загрузки других вещей, например, например. Google Mail делает.

Ответ 3

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

Хорошие причины для использования iframe:

  • ads: adwords, например, использует эту технику, это хорошо для инкапсуляции - объявление css не уничтожит вашу страницу.
  • скрытый iframe: его можно использовать для сотен полезных для использования вещей, таких как отслеживание, ajax-альтернатива и т.д.

Ответ 4

IFrames не устарели, но причины их использования редки.

Причины использования iframes:

  • Это отлично подходит для обхода других людей из других доменов, но оно не интегрируется плавно. (таблицы стилей, javascript и т.д.)
  • Интеграция мультимедиа иногда может быть проще с помощью iframe, в отличие от использования тега embed.
  • Действительно, действительно специализированные случаи, такие как случай gmail, где они используют его для управления звуками и историей.

Я также ответил бы, что нет необходимости в удалении iframes, это необходимый тег и будет некоторое время.

Ответ 5

Я видел множество форумов, которые предлагают тег Object в качестве замены IFrame, который, вероятно, работает в большинстве случаев.

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

Что было:

<iframe id="confirmed_pdf" class="current_pdf" src="/prescriptions/show_pdf?id=123" height="570" width="480"></iframe>

Стал:

<object id="confirmed_pdf" class="current_pdf" data="/prescriptions/show_pdf?id=123" type="application/pdf" height="570" width="480">
  <p>[Show this message if displaying the PDF did not work]</p>
</object>

Но объект не был подходящей заменой для заполнения требования, чтобы иметь возможность печатать только часть PDF-страницы.

IFrame походит на собственное окно внутри страницы (окно внутри окна, в основном), и как только вы получите объект окна, вы можете вызвать .print() на нем, например:

jQuery("#confirmed_pdf").contentWindow.print();

IFrame имеет свойство contentWindow, что делает печать только той частью, которая возможна. Объект не имеет свойства contentWindow, поэтому нет способа распечатать только раздел страницы.

Итак, кажется, что если вы просто используете IFrame для отображения чего-то, там могут использоваться другие теги, такие как Object. Но если вам нужно взаимодействовать с содержимым IFrame определенными способами, возможно, потребуется IFrame.

Ответ 6

IFrames много используются с AJAX. Например, GMail использует девять скрытых IFrames.

Ответ 7

IFrames не мертвы, но Frameset/Frames умирают.

В последних 2 выпусках IE (IE7/IE8) масштабирование в Frames (не IFrames) создало катастрофические результаты.

В любом случае, используйте IFrames, но IMHO останется в стороне от Framesets/Frames.

Ответ 8

В моей предыдущей компании мы предоставили размещенное приложение, которое клиенты интегрировали бы на свои собственные веб-сайты. Иногда они использовали IFrame для этого, подгоняя нашу размещенную страницу в свои существующие проекты. Иногда это было даже сделано без проблем (т.е. IFrame не имел границ или полос прокрутки, он просто выглядел как часть страницы). Я считал, что это хорошее использование тега.

Ответ 9

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

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

Итак, у нас есть приложения, настроенные для работы на одном веб-сайте, а затем встроенные в наши другие веб-сайты с использованием iframe, позволяющие пропустить простой параметр javascript, чтобы мы могли интегрировать выбор тартана или клана с функциональностью на сайте внедрения. Iframe устанавливается как noborder, поэтому он абсолютно невозможен для конечного пользователя.

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

Ответ 10

Лошади для курсов... <iframe> s похожи на все остальное... для правильной цели они являются правильным инструментом; для неправильной цели они являются уродливым взломом или хуже.

В Ajax, <div> s часто являются более подходящим контейнером. В некоторых местах активность передаваемого внешнего контента как части вашего собственного сайта, поддерживаемая <iframe> s, является неприемлемой.

Моя команда использовала <iframe> на днях, как идеальный способ предоставить пользователям доступ к своей истории электронной почты в формате HTML - электронные письма были полными <html> которые мы хотели бы легко вставить в наш веб-шаблон. <iframe> s были абсолютно идеальны для представления этих данных].

С другой стороны, <iframe> s должно быть почти всегда удалено или отключено в любом переданном пользователем контенте, который выводится на сайт, поскольку в этом контексте они являются основной проблемой безопасности.

Ответ 11

В настоящее время спецификация гаджета Google полагается на iframes: http://code.google.com/apis/gadgets/docs/spec.html

В настоящее время это единственный простой способ обеспечить изоляцию для приложений javascript, которые извлекаются из нескольких доменов/поставщиков.

Также многие виджеты, которые люди внедряют на своих сайтах со сторонних сторон, используют iframes.

В то время как у них есть свои недостатки, iframe обеспечивают прагматичное решение общих проблем в Интернете. Я должен был предположить, что они будут в течение некоторого времени.

Ответ 12

Я только что сменил сайт с обычного фрейметта на iframes, так как обычные кадры не могли делать то, что мне нужно. Это не вызвало проблем с остальной частью кодовой базы.

Ответ 13

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

Мы обычно поставляем Iframe для интеграции наших продуктов электронной коммерции и клиентов, как то, как "под ключ" может быть.

Ответ 14

Я работаю в компании, которая использовала фреймы для всего: от выпадающих меню, списков, блоков контента и т.д., чтобы покрыть тонкости веб-форм .net. Приложение работает очень медленно и работает только с IE. Не делай этого.