Несколько элементов iframe (HTML-код) устарели? [закрытый]
получая противоречивые сообщения об этом, надеюсь, что это не так. Я не могу себе представить, что поддержка этого прекратится, так как их используют миллионы сайтов.
некоторые дополнительные вопросы об этом:
- почему они должны отказаться от этого тега?
- любая альтернатива для него?
14 ответов:
в своем взгляд консорциум W3C поторопилась в демпинг-кадры из строгой HTML и XHTML в DOCTYPE-декларации. В теории вы бы использовали
<object>
элемент для добавления посторонних объектов в документ, но различия и ограничения браузера сделали это не стартер для многих разработчиков. С гораздо более прагматичным HTML 5 (который все еще является черновиком), iframes вернулись и даже имеют два новых атрибута:seamless
, и интригующимsandbox
.
поддержка
<iframe>
все еще существует в HTML 5, поэтому я не думаю, что это изменится в ближайшем будущем.чтобы ответить на другие ваши вопросы:
<iframe>
s (как кадры в целом) в большинстве случаев не удобны для пользователя:
- они не позволяют легко получить доступ к содержимому в кадре через URL (без потери содержимого за пределами кадра, по крайней мере).
- большинство "технофоб" пользователи раздражены кадры.
- насколько я знаю, они медленнее рендеринга для браузеров
- альтернативы включают динамическую генерацию страниц (SSI, PHP, Rails и т. д.) и использование JavaScript / AJAX для изменения содержимого, например, a
<div>
чтобы было понятно: я говорю о
<iframe>
как элемент интерфейса. Не скрытый элемент для загрузки других вещей, таких как, например, почта Google.
Iframes устарели для макета страницы. Никогда не используйте их вместо хорошего макета CSS, даже табличный макет лучше.
веские причины для использования iframes являются:
- реклама: adwords, например, использует этот метод, он хорош для инкапсуляции - ad css не уничтожит вашу страницу.
- скрытый iframe: его можно использовать для сотен полезных вещей, таких как отслеживание, ajax-альтернатива и т. д.
iframe-это не устарело, но причины для их применения являются редкими.
- использование IFrames для обслуживания вашего собственного контента создает "стену" вокруг доступа к контенту в этой области.
- для искателей, таких как Google, не сразу ясно, что cotent в iframe будет оцениваться так же высоко, как если бы контент был просто частью страницы. для многих это достаточная причина, чтобы не использовать его.
- Это делает DOM для IFrame менее доступен с помощью таких инструментов, как jQuery, prototype и т. д..
причины использования iframes:
- он отлично подходит для ограждения от чужих вещей из других доменов, но он не интегрируется плавно. (таблицы стилей, JavaScript и т. д...)
- интеграция мультимедиа иногда может быть сделано проще с помощью iframe, а не с помощью встроенного тега.
- действительно, действительно специализированные случаи, такие как случай gmail, где они используют его для звуков и Управление историей.
Я бы также ответил, что нет необходимости в удалении iframes, это необходимый тег и будет вокруг на некоторое время.
Я видел много форумов, которые предлагают тег объекта в качестве замены для IFrame, который, вероятно, работает в большинстве случаев.
например, у меня был PDF-файл, отображаемый в IFrame (потому что были другие вещи, которые нам нужно показать на странице, кроме только PDF), и я смог заставить его отображать нормально, используя объект.
что было:
<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 похож на свое собственное окно на странице (окно в окне, в основном), и как только вы получите объект window, вы можете позвонить .печать() на нем, например:
jQuery("#confirmed_pdf").contentWindow.print();
IFrame имеет свойство contentWindow,что делает возможным печать только этой части. Объект не имеет свойства contentWindow, поэтому нет способа распечатать только раздел страницы.
Так что, похоже, если вы просто используете IFrame для отображения чего-то, есть другие теги, такие как объект, который можно использовать вместо этого. Но если вам нужно взаимодействовать с содержимым IFrame определенным образом, то IFrame может быть необходим.
IFrames используются много с AJAX. Например, GMail использует девять скрытых кадров, которые я считаю.
IFrames не мертвы, но Frameset / Frames умирают.
в последних 2 выпусках IE (IE7/IE8) масштабирование кадров (не IFrames) привело к катастрофическим результатам.
обязательно используйте IFrames, но IMHO держитесь подальше от наборов фреймов/кадров.
в моей предыдущей компании мы предоставили размещенное приложение, которое клиенты будут интегрировать в свои собственные веб-сайты. Иногда они будут использовать IFrame для этого, приспосабливая нашу размещенную страницу к своим существующим проектам. Иногда это даже делалось плавно (т. е. IFrame не имел границ или полос прокрутки, он просто выглядел как часть страницы). Я считал, что это хорошее использование тега.
Они могут быть чрезвычайно полезны в некоторых обстоятельствах, но это ограничено. В частности, внедрение общей функциональности на нескольких сайтах.
например, у меня есть клиент, который управляет несколькими сайтами электронной коммерции шотландских товаров. В рамках этого мы разработали несколько простых приложений, чтобы найти возможные имена кланов из вашей фамилии или вашего выбора Тартанов (хихикайте, если хотите, но тартаны стоят 700 миллионов долларов в год для нашей экономики). База данных за этим является удивительно большим (почти десять тысяч строк в основных именах и таблицах tartans) и довольно регулярно обновляется.
таким образом, у нас есть приложения, настроенные для запуска на одном веб-сайте, а затем встроенные в другие наши веб-сайты с помощью iframe, что позволяет передавать простые параметры javascript, чтобы мы могли интегрировать выбор тартана или клана с функциональностью на сайте встраивания. Элемент iframe устанавливается как noborder получается абсолютно незаметно для конечного пользователя.
Of конечно, были бы и другие способы сделать это, но использование iframe является простым и надежным. И это, конечно, не устарело.
лошади для курсов...
в Ajax,
s часто являются более подходящим контейнером. В некоторых местах деятельность по передаче внешнего контента как части вашего собственного сайта, поддерживаемая
спецификация гаджета google в настоящее время опирается на iframes:http://code.google.com/apis/gadgets/docs/spec.html
В настоящее время они являются единственным простым способом обеспечить изоляцию для приложений javascript, которые извлекаются из нескольких доменов/поставщиков.
также многие виджеты, которые люди вставляют на свои веб-сайты от третьих лиц, используют iframes.
в то время как у них есть свои недостатки, фреймы обеспечивают прагматическое решение общих проблемы в интернете. Я бы предположила, что они будут вокруг в течение некоторого времени.
Я только что изменил сайт с обычного набора фреймов на Iframes, поскольку обычные фреймы не могли делать то, что мне нужно. Это не вызвало никаких проблем с остальной частью кода.
вопросы соответствия и безопасности также могут заставить вас использовать Iframes; тележки для покупок являются популярными реализациями на основе IFrame, когда вы хотите визуально включить корзину покупок в состав некоторых веб-страниц, не беря на себя полную ответственность за обработку платежей.
мы обычно поставляем Iframe для интеграции наших материалов электронной коммерции и клиентов, таких как "под ключ".