在另一个网页中嵌入网页的方法:使用iframe或object标签

36

我在工作中维护的一个基于Web的系统最近上线了,在其中使用Object元素将第二个Web页面嵌入到主Web页面中。 (实际上,主Web页面包含菜单和标题,而主要应用程序页面则在该对象中)

例如:

<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标记,嵌入式网页的行为与以前托管在IFRAME中时不同。例如,在IE中,工具提示似乎不起作用(我将发布一个单独的问题!),看起来嵌入的页面无法在脚本中访问父页面,尽管如果它是一个IFRAME则可以。

有人告诉我支持使用object标记而不是IFRAME的原因是IFRAME已被弃用,因此不能依赖于浏览器的未来版本。但这是否正确?使用Object标记嵌入网页是否更可取?或者说IFRAME可能会在未来得到很好的支持(甚至在我老去并过了维护应用程序的有用寿命之后)?

4个回答

47

IFRAME元素即将推出的HTML5标准的一部分。此外,HTML5由主要的浏览器供应商(Mozilla、Opera、Safari、IE)开发,这基本上保证了我们在可预见的未来会有一个IFRAME元素。他们中的一些已经支持了一些HTML5元素,如AUDIO和VIDEO以及一些新的JavaScript API。

也确实有OBJECT元素处于草案阶段,但这是因为IFRAME和OBJECT将有不同的用途。IFRAME主要设计用于沙箱化Web应用程序。

因此,我的建议是使用IFRAME而不是OBJECT。


10
如果您要嵌入一个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

8

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

许多书签和分析代码仍在使用IFRAMEs。


2
虽然W3C规范可能表明IFRAME标签正在被弃用(至少在XHTML中是这样),但浏览器开发人员不一定完全按照这些规范来(IE6有没有?)
由于目前使用IFRAME非常普遍,而且W3C似乎无法确定它们是否属于未来的一部分(HTML 4.01 vs XHTML),我相信对于几乎所有浏览器来说,它们是更安全的实现方式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接