kam*_*ens 183 html browser xhtml cross-browser
XHTML中的所有有效自闭元素(例如<br/>)是什么(由主要浏览器实现)?
我知道XHTML在技术上允许任何元素自我关闭,但我正在寻找所有主要浏览器支持的那些元素的列表.有关由自关闭元素(如<div />)引起的某些问题的示例,请参见http://dusan.fora.si/blog/self-closing-tags.
Kor*_*nel 180
每个支持XHTML的浏览器(Firefox,Opera,Safari,IE9)都支持每个元素的自动关闭语法.
<div/>
,<script/>
,<br></br>
都应该只是罚款.如果他们不这样做,那么你的HTML会添加不恰当的XHTML DOCTYPE.
DOCTYPE不会更改文档的解释方式.只有MIME类型.
HTML WG讨论了这个问题:目的是允许旧的(仅限HTML)浏览器遵循指南接受XHTML 1.0文档,并将它们作为text/html提供.因此,用作text/html的文档应该被视为HTML而不是XHTML.
这是一个非常常见的陷阱,因为W3C Validator在很大程度上忽略了这个规则,但是浏览器在宗教上遵循它.阅读 从WebKit博客了解HTML,XML和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>
Run Code Online (Sandbox Code Playgroud)
它验证,并且在真正的XHTML中它完美地工作(参见:1 vs 2).如果您无法相信自己的眼睛(或者不知道如何设置MIME类型),请通过XHTML代理打开您的页面.
另一种检查方法是在Firefox中查看源代码.当它们无效时,它会突出显示红色的斜线.
在HTML5/XHTML5中,这没有改变,并且区别更加清晰,因为你甚至没有额外的DOCTYPE
.Content-Type
是国王.
为了记录,XHTML规范允许任何元素通过使XHTML成为XML应用程序来自动关闭:[强调我的]
空元素标签可以用于任何没有内容的元素,无论是否使用关键字EMPTY声明它.
它也在XHTML规范中明确显示:
空元素必须要么有结束标签或者开始标签必须结束
/>
.例如,<br/>
或<hr></hr>
Eri*_*kel 40
关于这个主题要非常小心的一个要素是<script
>元素.如果您有外部源文件,则在自行关闭时会导致问题.试试吧:
<!-- this will not consistently work in all browsers! -->
<script type="text/javascript" src="external.js" />
Run Code Online (Sandbox Code Playgroud)
这可以在Firefox中使用,但至少在IE6中有效.我知道,因为当我过度热心地关闭我看到的每一个元素时,我遇到了这个问题;-)
hsi*_*nen 35
自闭语法适用于application/xhtml + xml中的所有元素.text/html中的任何元素都不支持它,但HTML4中"空"或HTML5中"void"的元素无论如何都不会使用结束标记,所以如果你在它们上面放一个斜杠,它就像是支持自关闭语法.
Con*_*oyP 34
来自W3学校参考站点:
<area />
<base />
<basefont />
<br />
<hr />
<input />
<img />
<link />
<meta />
Run Code Online (Sandbox Code Playgroud)
Jef*_*eff 10
希望这有助于某人:
<base />
<basefont />
<frame />
<link />
<meta />
<area />
<br />
<col />
<hr />
<img />
<input />
<param />
Run Code Online (Sandbox Code Playgroud)
您应该查看xHTML DTD,它们都已列出。以下是所有主要内容的快速回顾:
<br />
<hr />
<img />
<input />
Run Code Online (Sandbox Code Playgroud)
上次我检查时,以下是 HTML5 中列出的空/void 元素。
对作者有效:area、base、br、col、command、embed、eventsource、hr、img、input、link、meta、param、source
对作者无效:basefont、bgsound、frame、spacer、wbr
除了 HTML5 中的一些新功能之外,您还应该了解在将 XHTML 作为文本/html 提供服务时可能支持的功能。(只需通过检查生成的 DOM 来测试它们即可。)
至于 XHTML 作为 application/xhtml+xml(这使其成为 XML),适用 XML 规则并且任何元素都可以为空(即使 XHTML DTD 无法表达这一点)。
怎么样<meta>
和<link>
?他们为什么不在名单上?
快速经验法则,不要自行关闭任何有内容的元素,因为它肯定会迟早引起浏览器问题.
这自然是自闭,喜欢的.<br>
和<img>
,应该是显而易见的.那些不是......只是不要自我关闭!