html - 为什么自关闭 iframe 标记会阻止显示更多 DOM 元素?

标签 html dom iframe

在 Firefox 和 Safari 上,以下代码仅显示第一个 iframe

<iframe src="http://www.bing.com"/>
<iframe src="http://www.tsr.ch"/>

而添加结束标记可以解决问题

<iframe src="http://www.bing.com"></iframe>
<iframe src="http://www.tsr.ch"></iframe>

我不明白为什么它不起作用。当使用 DOMParser 解析第二个示例时,它无论如何都会转换为自关闭 iframe。

在这里摆弄:http://jsfiddle.net/hLcukz6p/

最佳答案

因为 iframe元素不是自闭合元素。您使用的 Firefox 和 Safari 版本正在处理 />最后就像>并假设它之后的所有内容都包含在 iframe 中.

如果我们试图通过 W3C's validator 传递您提供的代码我们将看到以下错误:

Error: Self-closing syntax (/>) used on a non-void HTML element. Ignoring the slash and treating as a start tag.

<iframe src="http://www.bing.com"/>

Error: End of file seen when expecting text or an end tag.

</html>

Error: Unclosed element iframe.

<iframe src="http://www.bing.com"/>

如果您使用浏览器的元素检查器检查您的文档,您会看到发生了什么。

我正在使用的 Chrome 会转换无效的 <iframe ... /><iframe ...></iframe> :

Chrome Example

关于html - 为什么自关闭 iframe 标记会阻止显示更多 DOM 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27545757/

相关文章:

android - [YouTube IFrame][Android] 如何从移动浏览器中删除 YouTube Logo

sql - 更新YouTube iframe属性

html - 服务器通过 varnish 代理发送事件

javascript - 如何使此滚动到 div 脚本 "smooth"

javascript - z-index 属性未被检索,而其他属性正在被相同的辅助函数检索

javascript - 删除按钮无法正常工作(DOM)

html - 检测 iframe,服务器端(无 JavaScript)?

JavaScript roundslider 插件默认设置

html - 为什么元素在 jquery-ui sortable 中重叠底部边框?

javascript - 使用 each() 进行 jQuery DOM 操作;