HTML5中的<object>
和HTML4中的<object>
。
object元素代表外部内容,根据内容类型,将被视为图像、嵌套浏览上下文或由插件处理的外部内容。
源于HTML4的动机:
以前的HTML版本允许作者通过IMG和APPLET元素来包含图像和小应用程序。这些元素存在一些限制:
- 它们无法解决如何包含新的和未来的媒体类型的更普遍的问题。
- APPLET元素仅适用于基于Java的小应用程序。OBJECT元素是对其的替代。
- 它们存在无障碍问题。
为了解决这些问题,HTML 4引入了OBJECT元素,它提供了一种通用的对象包含解决方案。 OBJECT元素允许HTML作者指定用户代理呈现对象所需的全部内容:源代码、初始值和运行时数据。在此规范中,“对象”一词用于描述人们想要放置在HTML文档中的事物;其他常用术语包括小应用程序、插件、媒体处理程序等。(重点强调)
因此,基本上元素非常通用。唯一的真正条件是需要客户端具有一定功能来呈现该元素。
例如:
<object data="test.html" height="50" width="50"></object>
在Firefox中,渲染test.html内容
时会在一个小区域内显示(无缩放!)而链接
仅显示[OBJ]
。
嵌入式内容解释了遇到<object>
元素时会发生什么。
由于上述算法,只有在无法显示引用资源(例如返回404错误)时,对象元素的内容才作为后备内容使用。这允许多个对象元素相互嵌套,针对具有不同功能的多个用户代理,并使用户代理选择它支持的第一个对象元素。(我强调)
我认为这回答了<object>
元素如何进入DOM的问题。如果是其他方式,例如包含文档中的元素ID可能会覆盖主机页面的DOM。
无论您在当前用户代理中观察到了什么功能,都应确保所包含的HTML文档结构良好且有效。
向下滚动,考虑所包含的示例:
In this example, an HTML page is embedded in another using the object element.
<figure>
<object data="clock.html"></object>
<figcaption>My HTML Clock</figcaption>
</figure>
请注意,此示例是指一个 HTML 页面而不是片段。