使用iframe或Object标签将网页嵌入另一个网页

时间:2009-05-29 08:20:50

标签: html 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执行此操作。我发现通过使用object标签,嵌入式Web页面的行为与先前在IFRAME中托管的行为不同。例如,在IE中,工具提示看起来不起作用(我将发布一个关于此的单独问题!),看起来嵌入式页面无法访问脚本中的父页面,尽管它可以是IFRAME

我被告知在IFRAME上支持对象标记的原因是IFRAME已被弃用,因此不能依赖于未来版本的浏览器。这是真的吗?是否最好在Iframe上使用Object标签来嵌入网页?或者很可能IFRAME将来会得到很好的支持(很久以后我已经老了灰色,并且超过了我维护的应用程序的使用寿命)?

4 个答案:

答案 0 :(得分:44)

IFRAME elementupcoming HTML5 standard的一部分。此外,HTML5是由主要的浏览器厂商(Mozilla,Opera,Safari,IE)开发的,它们基本上保证了我们在可预见的未来将拥有一个IFRAME元素。其中一些已经支持某些HTML5元素,如AUDIO和VIDEO以及一些新的JavaScript API。

the OBJECT element is in the draft也是如此,但那是因为IFRAME和OBJECT会有不同的目的。 IFRAMES主要用于沙盒网络应用。

所以,我的建议是使用IFRAME而不是OBJECT。

答案 1 :(得分:8)

IFRAME不是XHTML 1.0 Strict DTD的一部分。我相信它们在HTML 4和XHTML 1.0 Transitional中完全有效。仅凭这些原因,IFRAME将继续得到长期支持。

许多bookmarklet和分析代码仍然使用IFRAME。

答案 2 :(得分:6)

如果您要嵌入HTML页面,iframeobject之间存在明显区别:

  • iframe更新src将更改浏览器历史记录(添加新条目)
  • object更新data不会更改浏览器历史记录

如果页面嵌入object标记,但在iframe标记中有效,则拖放似乎不起作用。我使用react-draggable亲自注意到它,我可以看到有人遇到同样的问题(https://stackoverflow.com/questions/31807848/replacing-iframe-with-object-tag-drag-and-drop-not-working

答案 3 :(得分:2)

虽然W3C规范可能表明IFRAME标签已被弃用(至少在XHTML中),浏览器开发人员并不一定完全遵循这些规范所说的(IE6任何人?)

由于IFRAME的使用目前非常普遍,W3C似乎无法决定它们是否是未来的一部分(HTML 4.01 vs XHTML),我很确定它们是更安全的实现方式适用于几乎所有浏览器。