我正在与两位开发人员讨论如何将<iframe>
放在HTML页面的<head>
中。这是TAG所必需的。
根据开发人员1,标记可能不会放在标题中,因为标记会创建iframe来加载另一个标记,而iframe是流内容,必须根据W3C规范放在<body>
中HTML 5.1。
开发人员2表示在允许嵌入内容的任何环境中都允许使用iframe。一些嵌入的内容也可以是交互式内容(例如音频标签),并且这些内容必须在体内;但是,我们添加的iframe没有内容且不具有交互性,因此根据他对规范的理解,它可能会出现在文档的任何位置。
有关W3C规范的更多信息,请访问:http://www.w3.org/TR/html5/dom.html#kinds-of-content
W3C验证器不会在头部发出iframe错误或警告,但这对于开发人员1来说还不够。
问题很简单:如果我们将iframe放在头部没有内容,这会违反规范吗,或者说规范是否像开发人员2所说的那样留下了解释空间?
答案 0 :(得分:10)
根据开发人员1,标签可能不会放在标题中,因为标签会创建一个IFRAME来加载另一个标签,而IFRAME是必须根据HTML 5.1的W3C规范放在BODY中的流内容
这是正确的
开发人员2表示允许在允许嵌入式内容的任何环境中使用IFRAME。
正确
某些嵌入内容也可能是互动内容(例如:音频标签),而这些内容必须位于BODY中,
正确
但是,我们添加的IFRAME没有内容
不正确的。
iframe元素的子节点为不支持框架的浏览器提供替代内容。这是内容。
iframe本身是一个被替换的元素。它在页面上生成可视UI以显示另一个文档。这是内容。
并且不是互动的,
specification explicitly lists it as being interactive content。
基于他对规范的理解,它可能会出现在文档的任何地方。
不正确的。
W3C验证器不会抛出错误或警告,但这对于开发人员1来说还不够。
不允许在头部中使用的iframe将隐式结束head元素并启动body元素,因此如果您使用仅在头部或显式头端允许的内容,则只会出现错误标签或正文开始标记。
如果我们放置没有内容的IFRAME
没有这样的事情
HEAD中的将违反规范
将任何iframe放入头部将违反规范