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

Posted

技术标签:

【中文标题】使用 iframe 或 Object 标签将网页嵌入另一个【英文标题】:Use of Iframe or Object tag to embed web pages in another 【发布时间】:2010-10-29 19:47:12 【问题描述】:

在我维护的最近上线的基于 Web 的系统中,它使用 Object 元素在主网页中嵌入第二个网页。 (实际上主网页包含菜单和标题,主应用程序页面在对象中)

例如

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

此应用程序的旧版本使用 IFRAME 来执行此操作。我发现通过使用对象标签,嵌入式网页的行为与以前托管在 IFRAME 中时不同。例如,在 IE 中,工具提示不起作用(我将发布一个单独的问题!),并且看起来嵌入页面无法访问脚本中的父页面,尽管如果它是 IFRAME 则可以.

有人告诉我,对象标签优于 IFRAME 的原因是 IFRAME 已被弃用,因此未来版本的浏览器不能依赖它。这是真的吗?是否最好在 iframe 上使用 Object 标签来嵌入网页?或者 IFRAME 是否有可能在未来得到很好的支持(在我年老体衰,并且超过了我维护的应用程序的使用寿命之后)?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

由于目前 IFRAME 的使用如此普遍,而且 W3C 似乎无法确定它们是否是未来的一部分(HTML 4.01 与 XHTML),我很确定它们是使用起来更安全的实现几乎适用于所有浏览器。

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

+1 用于引用并阐明对象和 iframe 执行不同的工作【参考方案4】:

如果您要嵌入 HTML 页面,iframeobject 之间有一个明显的区别:

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

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

【讨论】:

以上是关于使用 iframe 或 Object 标签将网页嵌入另一个的主要内容,如果未能解决你的问题,请参考以下文章

HTML - 内嵌标签相关

html内嵌iframe网页高度自适应

嵌入页面object&&iframe

[19/05/17-星期五] HTML_body标签(内嵌标签)和框架标签

本地测试时,iframe框架页正常,但是将网页放到服务器时,iframe中有的内嵌页面加载不出来

thinkphp框架本地测试时,iframe框架页正常,但是将网页放到服务器时,iframe中有的内嵌页面加载不出来