使用 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 页面,iframe
和 object
之间有一个明显的区别:
iframe
更新 src
将更改浏览器历史记录(添加新条目)
object
更新data
不会改变浏览器历史记录
此外,如果页面嵌入在object
标记中,拖放似乎不起作用,但在iframe
标记中有效。我个人使用react-draggable
注意到它,我可以看到有人遇到了同样的问题 (https://***.com/questions/31807848/replacing-iframe-with-object-tag-drag-and-drop-not-working)
【讨论】:
以上是关于使用 iframe 或 Object 标签将网页嵌入另一个的主要内容,如果未能解决你的问题,请参考以下文章
[19/05/17-星期五] HTML_body标签(内嵌标签)和框架标签