XHTML中的所有有效自闭元素(例如
)是什么(由主要浏览器实现)?
我知道XHTML在技术上允许任何元素自我关闭,但我正在寻找所有主要浏览器支持的那些元素的列表 . 有关由自关闭元素(如<div />)引起的某些问题的示例,请参阅http://dusan.fora.si/blog/self-closing-tags .
XHTML中的所有有效自闭元素(例如
)是什么(由主要浏览器实现)?
我知道XHTML在技术上允许任何元素自我关闭,但我正在寻找所有主要浏览器支持的那些元素的列表 . 有关由自关闭元素(如<div />)引起的某些问题的示例,请参阅http://dusan.fora.si/blog/self-closing-tags .
13 回答
<meta>
和<link>
怎么样?他们为什么不在名单上?快速经验法则,不要自行关闭任何有内容的元素,因为它肯定会迟早引起浏览器问题 .
那些自然闭合的,如
<br>
和<img>
,应该是显而易见的 . 那些没有自我关闭的人!每个支持XHTML的浏览器(Firefox,Opera,Safari,IE9)都支持 every element 上的自动关闭语法 .
<div/>
,<script/>
,<br></br>
都应该工作得很好 . 如果他们不这样做,那么你有不恰当添加的XHTML DOCTYPE的HTML .DOCTYPE does not change how document is interpreted. Only MIME type does .
W3C decision about ignoring DOCTYPE:
这是一个非常常见的陷阱,因为W3C Validator在很大程度上忽略了这个规则,但浏览器却虔诚地遵循它 . 从WebKit博客阅读Understanding HTML, XML and XHTML:
要使用XHTML的DOCTYPE测试您是否拥有真正的XHTML或无效HTML,请将其放入您的文档中:
它验证,并在真正的XHTML中它完美地工作(参见:1 vs 2) . 如果您不知道如何设置MIME类型,请通过XHTML proxy打开您的页面 .
另一种检查方法是在Firefox中查看源代码 . 当它们无效时,它会突出显示红色的斜线 .
在HTML5 / XHTML5中,这还没有't changed, and the distinction is even clearer, because you don'甚至还有
DOCTYPE
.Content-Type
是国王 .为了记录,XHTML规范允许任何元素通过使XHTML成为XML application来自动关闭:[强调我的]
它也明确地显示在_995197中:
关于这个主题要非常小心的一个要素是
<script
>元素 . 如果您有外部源文件,当您自行关闭它时会导致问题 . 试试吧:这可以在Firefox中使用,但至少在IE6中有效 . 我知道,因为当我过度热心地关闭我看到的每一个元素时,我遇到了这个;-)
自闭语法适用于application / xhtml xml中的所有元素 . text / html中的任何元素都不支持它,但HTML4中“空”或HTML5中“void”的元素无论如何都不会使用结束标记,所以如果你在它们上面放一个斜杠就好像支持自关闭语法 .
从W3 Schools reference site:
更好的问题是:即使在HTML模式下哪些标签也可以自动关闭而不影响代码?答案:只有那些内容空洞的内容(无效) . 根据HTML specs,以下要素无效:
area, base, br, col, embed, hr, img, input, keygen, link, menuitem, meta, param, source, track, wbr
较旧版本的规范也列出了
command
. 此外,根据各种来源,以下过时或非标准标签无效:basefont, bgsound, frame, isindex
希望这有助于某人:
我最后一次检查,以下是HTML5中列出的空/空元素 .
对作者有效:area,base,br,col,command,embed,eventsource,hr,img,input,link,meta,param,source
作者无效:basefont,bgsound,frame,spacer,wbr
除了HTML5中的新功能之外,还应该让您了解在将XHTML作为text / html提供时可能支持的内容 . (只需通过检查生成的DOM来测试它们 . )
至于XHTML作为application / xhtml xml(使其成为XML),XML规则适用,任何元素都可以为空(即使XHTML DTD无法表达这一点) .
你应该看看xHTML DTDs,它们都列出了 . 以下是对所有主要内容的快速回顾:
它们're called 995214 elements in HTML 5. They'重新列在official W3 spec中 .
截至2013年4月,它们是:
截至2018年12月(HTML 5.2),它们是:
IE的另一个自闭标签问题是title元素 . 当IE(只是在IE7中尝试过)看到这一点时,它会向用户显示一个空白页面 . 然而,你“查看源”,一切都在那里 .
我最初在XSLT生成自闭标记时看到了这个 .
我不会试图对此进行过多的讨论,特别是因为我编写的大多数页面都是生成的,或者标签确实有内容 . 只有两个在让它们自我关闭时给我带来麻烦的是:
<title/>
为此,我简单地使用了一个单独的结束标记,因为一旦它出现在
<head></head>
中,它无论如何都不会使你的代码变得更加混乱 .<script/>
这是我最近遇到问题的最大问题 . 多年来,当脚本来自外部源时,我总是使用自动关闭的
<script/>
标签 . 但是我最近开始收到关于null表单的JavaScript错误消息 . 经过几天的研究,我发现问题是(据说)浏览器永远不会到达<form>
标签,因为它没有意识到这是<script/>
标签的结尾 . 所以当我把它分成单独的<script></script>
标签时,一切都运转了 . 为什么我在同一个浏览器上制作的不同页面有所不同,我不知道,但找到解决方案是一个很大的解脱!<hr />是另一个