XHTML(由主流浏览器实现)中所有有效的自闭合元素(例如
)是什么?
我知道 XHTML 在技术上允许任何元素自关闭,但我正在寻找所有主要浏览器支持的那些元素的列表。请参阅 http://dusan.fora.si/blog/self-closing-tags 以了解由
等自闭合元素引起的一些问题的示例。
每个支持 XHTML 的浏览器(Firefox、Opera、Safari、IE9)都支持 每个元素 的自关闭语法。
<div/>
、<script/>
、<br></br>
都应该可以正常工作。如果没有,那么您的 HTML 中添加了不恰当的 XHTML DOCTYPE。
DOCTYPE 不会改变文档的解释方式。 Only MIME type does。
W3C decision about ignoring DOCTYPE:
HTML WG 讨论了这个问题:其目的是允许旧的(仅 HTML)浏览器按照指南接受 XHTML 1.0 文档,并将它们作为 text/html 提供。因此,作为 text/html 的文档应该被视为 HTML 而不是 XHTML。
这是一个非常常见的陷阱,因为 W3C Validator 在很大程度上忽略了该规则,但浏览器却虔诚地遵循它。阅读 WebKit 博客中的 Understanding HTML, XML and XHTML:
事实上,互联网上绝大多数所谓的 XHTML 文档都是以 text/html 格式提供的。这意味着它们根本不是 XHTML,而是实际上在 HTML 解析器的错误处理中得到的无效 HTML。所有那些“有效的 XHTML 1.0!”网络上的链接实际上是在说“无效的 HTML 4.01!”。
要使用 XHTML 的 DOCTYPE 测试您是否有真正的 XHTML 或无效的 HTML,请将其放入您的文档中:
<span style="color:green"><span style="color:red"/>
If it's red, it's HTML. Green is XHTML.
</span>
它验证并在真正的 XHTML 中完美运行(参见:1 与 2)。如果您不相信自己的眼睛(或不知道如何设置 MIME 类型),请通过 XHTML proxy 打开您的页面。
另一种检查方法是在 Firefox 中查看源代码。当斜杠无效时,它会以红色突出显示斜杠。
在 HTML5/XHTML5 中,这并没有改变,而且区别更加明显,因为您甚至没有额外的 DOCTYPE
。 Content-Type
是国王。
作为记录,XHTML 规范允许任何元素通过将 XHTML 设为 XML application 来自动关闭:[强调我的]
空元素标签可用于任何没有内容的元素,无论它是否使用关键字 EMPTY 声明。
它还在 XHTML spec 中明确显示:
空元素必须有一个结束标记或开始标记必须以 /> 结尾。例如,
或
在这个主题上要非常小心的一个元素是 <script
>元素。如果你有一个外部源文件,当你自己关闭它时会引起问题。试试看:
<!-- this will not consistently work in all browsers! -->
<script type="text/javascript" src="external.js" />
这将在 Firefox 中工作,但至少在 IE6 中会中断。我知道,因为当我过分热心地自我关闭我看到的每个元素时,我遇到了这个问题 ;-)
<script>
或<div>
的自动关闭版本会导致不同的呈现/解释。text/html
中。在真正的 XHTML 中,作为application/xhtml+xml
发送它工作得很好。请在投票之前阅读我链接到的文章(或 XHTML 规范附录 C)。application/xhtml+xml
MIME 类型,我可以保证<script/>
可以正常工作。使用 MIME 类型。仅有的。