使用<object>标签包含HTML内容:所允许的包含文件格式。

5

好的,我知道如何使用<object>标记从单独的文件中包含HTML内容。但我找不到关于所包含的HTML文件允许/要求的内容的任何信息。所述包含的文件是否仅可以是带有一些HTML标记的文本,还是必须是具有头部、<head><body>的完整HTML文件?如果它在原始文档的DOM中出现,它会以什么形式出现?或者这两个文件被完全分开处理了吗?

是的,我知道,我可以进行实验来看看哪些方法有效。然而,我足够了解HTML,知道暂时有效的做法可能不是正确的做法。我不希望任何人在此列出所有规则,但如果有人可以发一些链接,那就太感激了。这是一个已被证明在互联网上搜索极为困难的主题。


@j08691,感谢您编辑我的帖子。我想知道尖括号会被显示为代码还是只是尖括号。 - GrantRobertson
3个回答

2
13.5嵌入式文档注释中,我相信我已经找到了我两个问题的答案。第二段说:

一个嵌入的文档完全独立于它所嵌入的文档。例如,嵌入文档内的相对URI根据嵌入文档的基本URI解析,而不是主文档的URI。嵌入文档只在另一个文档中呈现(例如,在子窗口中);它在其他情况下保持独立。

所以,正如@Quentin和@Sinan所说,它需要嵌入的.html文件是完整的、有效的.html文件。而且,它不会成为原始文档的DOM的一部分。
感谢大家的及时协助。StackOverflow社区继续让我惊叹。

1

<object> 是一种包含通用媒体对象的方式。

HTML 文档就是其中之一的例子。

HTML 规范没有描述如何向浏览器提供 HTML 片段,只有完整文档。没有标准的 MIME 类型用于 HTML 片段。

因此:应该使用完整的 HTML 文档。

话虽如此,如果您选择这条路线,您几乎肯定会更好地使用 <iframe>,它具有更加丰富和强大的 API 和相关文档。

如果在原始文档的 DOM 中出现,它将如何显示?

作为对象元素。其子节点是您在开始和结束标记之间提供的任何替代内容。

还是两个文档完全独立处理?

是的,很像 iframe。


谢谢。我会研究一下 iframe。 - GrantRobertson

1

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 页面而不是片段。

1
@SinanÜnür,我需要一段时间来阅读你提供链接中的嵌入式内容信息。如果有进一步的问题,我会回复大家。感谢你们的帮助。 - GrantRobertson
欢迎。有个参考是很好的,但我已经仔细阅读了,我觉得你不会找到任何明确说明如果包含HTML就必须是一个完整有效文档的内容。我试过的每个浏览器似乎都可以处理片段,但显然,来自宿主文档的样式将不会应用于嵌入文档。所以,如果你希望在嵌入文档中使用任何样式或行为,你需要确保它是一个完整的HTML页面。 - Sinan Ünür

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