W3C是否允许在head标签中使用iframe标签?

8
我正在与两个开发者讨论在 HTML 页面的 <head> 中放置 <iframe> 的问题,这是需要使用 TAG。
根据开发者1的说法,该标签可能不能放置在头部,因为该标签创建了一个 iframe 来加载另一个标签,而 iframes 是流内容,并且必须根据 HTML 5.1 的 W3C 规范将其放置在 <body> 中。
开发者2表示,iframe 可以放置在任何允许嵌入式内容的上下文中。有些嵌入式内容也可以是交互式内容(例如音频标签),这些内容必须放在 body 中;但是,我们添加的 iframe 没有内容,也不是交互式的,因此根据他对规范的理解,它可以出现在文档的任何位置。
关于 W3C 规范的更多信息可以在这里找到:http://www.w3.org/TR/html5/dom.html#kinds-of-content W3C 验证器在 head 中使用 iframe 不会产生错误或警告,但这对于开发者1来说还不够。
我的问题很简单:如果我们在 head 中放置没有内容的 iframe,是否违反了规范,或者像开发者2所说,规范留下了解释的余地?

在HTML5中,无论什么情况下都不允许将嵌入内容放置在头元素中。 - Alohci
2
W3C验证器没有抛出错误或警告,但这对于开发人员1来说还不够。一个iframe会隐式结束head元素并开始body元素,因此只有在跟随允许仅在head中使用的内容或显式head结束标记或body开始标记时才会出现错误。 - Quentin
1个回答

10
根据开发人员1的说法,该标记可能不能放置在头部,因为该标记创建了一个IFRAME以加载另一个标记,而IFRAME是流内容,必须根据HTML 5.1的W3C规范放置在BODY中。
正确。
开发人员2说IFRAME允许在任何允许嵌入式内容的上下文中使用。
正确。
某些嵌入式内容也可以是交互式内容(例如:音频标记),这些必须放在BODY中,
正确。
但是,我们添加的IFRAME没有内容
不正确。
iframe元素的子节点为没有框架支持的浏览器提供了替代内容。这就是内容。
iframe本身是替换元素。它在页面上生成一个可视UI,用于显示另一个文档。这就是内容。
并且不具有交互性, 规范明确将其列为交互式内容
基于他对规范的理解,它可能出现在文档的任何地方。
不正确。
W3C验证器没有抛出错误或警告,但这对开发人员1来说还不够。
一个iframe不允许放在head中,会隐式结束head元素并开始body元素,所以只有在其后跟随仅允许在head中的内容、显式的head结束标记或body开始标记时,才会出错。
如果我们不加内容就放置IFRAME在HEAD中,这是否违反规范?
将任何iframe放在head中都将违反规范。

它可能“违反规范”,但这似乎并没有阻止Codepen这样做(为了嵌入脚本)。https://cdn.glitch.com/1f29c9e0-1cbc-4f66-acde-0750c45a668d%2F32959f10-bcf9-4c28-bfcb-b213b884590f.image.png?v=1614019245214 - unsynchronized

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