好的,我知道如何使用<object>
标记从单独的文件中包含HTML内容。我无法找到有关所包含的HTML文件中允许/要求的信息。可以说包含的文件只是带有一些HTML标签的文本,或者它是否必须是包含标题<head>
和<body>
的完整HTML文件?如果它出现在该DOM中,它如何出现在原始文档的DOM中?或者这两个文件是完全分开处理的?
是的,我知道,我可以尝试看看哪些有效。但是,我对HTML有足够的了解,知道现在发生的事情可能不是正确的做事方式。我不希望任何人在这里列出所有规则,但如果有人可以发布一些链接我会非常感激。这是一个已经证明难以在互联网上搜索的话题。
答案 0 :(得分:1)
<object>
in HTML5和<object>
in HTML4。
object元素表示外部内容,根据内容的类型,外部内容将被视为图像,嵌套浏览上下文或插件处理的外部内容。
来自HTML4的动机:
以前版本的HTML允许作者包含图像(通过IMG)和applet(通过APPLET)。这些元素有几个局限性:
- 他们未能解决如何包含新媒体类型和未来媒体类型的更一般性问题。
- APPLET元素仅适用于基于Java的applet。不推荐使用此元素以支持OBJECT。
- 他们造成无障碍问题。
为了解决这些问题,HTML 4引入了OBJECT元素,它提供了通用对象包含的通用解决方案。 OBJECT元素允许HTML作者指定对象为用户代理呈现所需的所有内容:源代码,初始值和运行时数据。 在此规范中,术语“对象”用于描述人们想要放在HTML文档中的内容;这些东西的其他常用术语是:applet,插件,媒体处理程序等。(强调我的)
因此,基本上,<object>
元素非常通用。唯一真实的条件是客户端需要某种功能来呈现元素。
例如:
<object data="test.html" height="50" width="50"></object>
使用Firefox在一个很小的区域(无缩放!)中呈现test.html
的内容,而links
只显示[OBJ]
。
Embedded Content解释了遇到<object>
元素时会发生什么。
由于上述算法, 对象元素的内容充当后备内容,仅在无法显示引用的资源时使用 (例如,因为它返回了404错误)。这允许多个对象元素彼此嵌套,针对具有不同功能的多个用户代理,用户代理选择它支持的第一个。 (强调我的)
我认为这回答了<object>
如何进入DOM的问题。例如,如果是其他任何方式,则包含文档中的元素id
可以在主页的DOM上进行操作。
无论您在当前用户代理中观察到哪些功能,都应确保包含的HTML文档结构合理且有效。
再往下,考虑一下这个例子:
在此示例中,使用object元素将HTML页面嵌入到另一个页面中。
<figure> <object data="clock.html"></object> <figcaption>My HTML Clock</figcaption> </figure>
请注意,该示例引用了 HTML页面 - 而不是片段。
答案 1 :(得分:1)
<object>
是一种包含通用媒体对象的方法。
HTML文档就是这样的一个例子。
HTML规范没有描述向浏览器提供HTML片段的方法,只提供完整的文档。 HTML片段没有标准的MIME类型。
因此:您应该使用完整的HTML文档。
也就是说,如果你要沿着这条路走下去,你几乎肯定会更好地使用<iframe>
,它有更多功能强大的API和文档。
如果它出现在原始文档的DOM中,它是如何出现在原始文档的DOM中的?
作为对象元素。其子节点是您在开始和结束标记之间提供的任何替代内容。
或者这两个文件是完全分开处理的?
是的,非常像iframe。
答案 2 :(得分:1)
在13.5 Notes on embedded documents中,我相信我已经找到了我的两个问题的答案。第二段说,
嵌入式文档完全独立于其中的文档 它是嵌入式的。例如,嵌入式中的相对URI 文档根据嵌入文档的基URI解析, 不是主要文件的。仅呈现嵌入的文档 在另一个文件中(例如,在子窗口中);它仍然是 独立的。
所以,是的,正如@Quentin和@Sinan所说,它需要嵌入的.html文件才能成为一个完整的,有效的.html文件。并且,不,它不会成为原始文档的DOM的一部分。
感谢大家的及时帮助。 StackOverflow社区继续令我惊讶。