Использование тега Iframe или Object для встраивания веб-страниц в другой

В веб-системе, которую я поддерживаю на работе, которая недавно появилась в прямом эфире, она делает элемент Object для встраивания второй веб-страницы в основную веб-страницу. (Фактически основная веб-страница содержит меню и заголовок, а основные страницы приложения находятся в объекте)

Например

<object id="contentarea" standby="loading data, please wait..."  
    title="loading data, please wait..." width="100%" height="53%" 
    type="text/html" data="MainPage.aspx"></object>

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

Мне говорят, что причина использования тега объекта над IFRAME заключается в том, что IFRAME устарела и поэтому не может полагаться на будущие версии браузеров. Это правда? Предпочтительно ли использовать тег Object над Iframe для встраивания веб-страниц? Или, скорее всего, IFRAME будет хорошо поддерживаться в будущем (долго после того, как я старую и серую, и прослужил бы срок службы приложения, которое я поддерживаю)?

Ответ 1

элемент IFRAME является частью предстоящего стандарта HTML5. Кроме того, HTML5 разработан основными поставщиками браузеров (Mozilla, Opera, Safari, IE), который в основном гарантирует, что в обозримом будущем у нас будет элемент IFRAME. Некоторые из них уже поддерживают некоторые элементы HTML5, такие как AUDIO и VIDEO, и некоторые новые API-интерфейсы JavaScript.

Также верно, что элемент OBJECT находится в проекте, но это потому, что IFRAME и OBJECT будут иметь разные цели. IFRAMES в основном предназначены для веб-приложений для песочницы.

Итак, советую использовать IFRAME вместо OBJECT.

Ответ 2

IFRAME не являются частью XHTML 1.0 Strict DTD. Я считаю, что они полностью применимы в HTML 4 и XHTML 1.0 Transitional. Только по этим причинам IFRAME будет продолжать поддерживаться в течение длительного времени.

Многие букмарклеты и аналитический код по-прежнему используют IFRAME.

Ответ 3

Если вы встраиваете HTML-страницу, вот одна заметная разница между iframe и object:

  • с обновлением iframe src изменит историю браузера (добавив новую запись)
  • с обновлением object data не изменит историю браузера

Также кажется, что drag & drop не работает, если страница встроена в тег object, но работает в теге iframe. Я лично заметил это с помощью react-draggable, и я вижу, что у кого-то была такая же проблема (https://stackoverflow.com/questions/31807848/replacing-iframe-with-object-tag-drag-and-drop-not-working)

Ответ 4

Хотя спецификации W3C могут указывать на то, что тег IFRAME устарел (по крайней мере, по крайней мере, в XHTML), разработчики браузеров не обязательно точно следуют тем, что говорят эти спецификации (IE6 кто-нибудь?)

Поскольку использование IFRAME настолько распространено на данный момент, и W3C не может решить, являются ли они частью будущего или нет (HTML 4.01 vs XHTML), я уверен, что это более безопасная реализация для использования почти для каждого браузера.