在html中总是自行关闭空标签是否有任何问题?

时间:2010-05-08 23:33:18

标签: html xml browser

是否存在任何浏览器问题,总是在html中折叠空标记。 因此,例如,可以像这样编写空头标记

<head></head>

但也可以像这样写

<head/>

第二种情况是否会导致任何场景出现问题?

由于

8 个答案:

答案 0 :(得分:8)

自动关闭<script>标签可能会严重破坏某些浏览器。我记得在我自动关闭一个脚本标签后,我的整个页面在IE中消失得无影无踪 - 一切都被读作脚本。

答案 1 :(得分:4)

假设您以XML格式提供XHTML,没有。 <head></head> 完全等同于<head />。事实上,XML解析器甚至不会费心去告诉你你有哪一个。

(但是,有一个问题是<head>代码必须包含<title>。)

答案 2 :(得分:3)

您不应该在XHTML中使用最小化形式的头部。

http://www.w3.org/TR/xhtml1/#guidelines

关于空元素:

http://www.w3.org/TR/xhtml1/#C_3

  

给定一个元素的空实例   其内容模型不是EMPTY(for   例如,空标题或段落)   不要使用最小化的形式(例如   使用<p> </p>而非<p />)。

换句话说,段落应始终在XHTML中关闭,在HTML中您只能使用开始标记。但是如果该元素应该具有内容,则应该正确地打开和关闭它。

例如,换行符有EMPTY内容模型,可以写成<br />(同样适用于<hr />),但不能写为<div />

Also see this SO question.

Empty Elements (XHTML)

Shorthand markup in HTML

答案 3 :(得分:2)

HTML 中不存在自动关闭代码。 /始终被忽略,即<foo/><foo>是等效的。对于br之类的元素,这没关系,因为您需要<br>。但是,<script src="..." /><script src="...">的含义相同,这是一个问题(如其他答案中所述)。 <head/>不是问题,因为</head>结束标记无论如何都是可选的。

另一方面,在 XML 中,自闭标签可以满足您的需求。但是,即使您拥有XHTML文档类型,您可能未使用XML 。除非您使用text/xmlapplication/xmlapplication/xhtml+xml MIME类型(或任何其他XML MIME类型)发送文档,特别是如果您将其作为text/html发送,则不会被视为XML。

答案 4 :(得分:0)

不是我知道的。过去一直困扰我的一个警告是自我关闭我的脚本标记:<script type="text/javascript" src="somefile.js" />

这会导致一些有趣的失败。

答案 5 :(得分:0)

我相信一些旧的浏览器存在缺乏空白的问题 - 特别是 <head/>将被解释为“head /”标记,而<head />将被解释为“head”标记,其空白属性“/”将被忽略。

这只会影响一些浏览器AFAIK。要么是有效的XHTML,要么只有旧的HTML浏览器可能会有问题。

事实上,the XHTML guidelines中将其记录为C.2

答案 6 :(得分:0)

通常,空元素可以写为自闭标记或开始和结束标记。

但是,HTML4 DTD指定文档HEAD必须包含TITLE元素。

“每个HTML文档必须在HEAD部分中有一个TITLE元素。”

http://www.w3.org/TR/1999/REC-html401-19991224/struct/global.html#h-7.4.1

答案 7 :(得分:0)

即使仅考虑浏览器问题(即无视有效性)并仅将问题缩小到head标记,答案仍然是肯定的。

比较

<head/>
<object>Does this display?</object>

针对

<head></head>
<object>Does this display?</object>

每个用作任何版本的IE的text / html。

Does this display?仅在后一个示例中显示。