我们真的需要使用</body>和</html>闭合标签吗?

4

1
你为什么在意多出或少了7或14个字节?这不会有任何影响,所以只需关闭元素即可。 - Rob
这并不是关于大小的问题,更多的是关于它是否在任何地方都能按预期工作。假设我的团队中有一半人添加了闭合标签,而另一半则没有。因此,我不确定应该如何确保它能够在各处都按预期工作。 - funguy
1
在HTML中,它们是可选的。也就是说,官方标准规定你可以省略它们。我不知道有哪个浏览器会因为省略它们而出现问题。换句话说,如果一个浏览器因此出现问题,那将是一个严重的bug,这样的浏览器将不能被部署! - Mr Lister
话虽如此,最好的实践是将这些结束标签放入其中,等等。 - Mr Lister
1
@CedricReichenbach 是的,<!DOCTYPE html><title>wtf</title><h1>hello</h1> 没有 head 也是完全有效的。但是你的浏览器可能会根据自己的方式包装 head 和 body。在开发工具中检查一下吧。 - Darren Gourley
显示剩余4条评论
4个回答

2
我们需要它吗?这取决于你的DTD。如果你正在使用XHTML,那么是的,你需要它来符合规范。出于可访问性考虑,我会包括闭合标签,因为你永远不知道是否有屏幕阅读器(或其他软件)只解析有效的XHTML,例如部分视力受损的人可能会受到影响。
Google显然也会将有效的文档排名高于无效的文档。
这里有一篇由一个朋友的朋友撰写的文章,更好地回答了你的问题;尽管它是在2008年编写的,但我认为其中的一些观点仍然适用。
如果你需要在XHTML应用程序中使用相同的HTML,你就不需要对其进行修改,可以直接复制过去而不必担心符合规范(因为你已经符合)。
另外,你本质上是在为你的标记语言做未来的保障。谁能说规范最终不会改变为“必须包括关闭 head 和 body 标签”?如果你已经有了它们,你就不需要担心了。然而,规范改变为“你必须包括关闭 head 和 body 标签”是高度不可能的。
正如一位伟人曾经说过的那样:
“当我使用完毕之后,应该关闭马桶盖吗?是的,尤其是如果妻子接下来要用它。” -达伦·高利(2015年11月)

无论您是否需要所有的结束标记,这实际上并不取决于DTD,而是取决于文件类型。在顶部具有XHTML doctype声明的.html文件仍然是HTML。另一方面,在具有HTML doctype声明的.xhtml文件仍然是XHTML,并且仍需要所有的XHTML装饰,如xmlns - Mr Lister
@MrLister 哈哈!我已经更新了答案。希望现在没有任何困惑了。 - Darren Gourley
@MrLister 我相当有信心,文件扩展名并不重要,如果通过http服务,它的Content-Type头部决定了内容应该用哪种媒体类型进行解释。 - Darren Gourley
如果这能让它更明显的话,我本来可以使用 MIME 类型而不是文件类型。但对于本地文件系统来说也同样如此,在这里你没有服务器为你分配 Content-Type 标头。 - Mr Lister
通常情况下,MIME类型会映射到HTTP静态请求文件的Content-Type头部。但是,这些可以根据您的需求在服务器上进行更改。如果您真的想要,您可以将.htm文件发送出去并设置为“application/xhtml+xml”类型。如果请求通过您的应用程序进行,则还可以为某些扩展名定义自己的MIME类型,并覆盖服务器的设置。我认为我们可以总结说,MIME、Content-Type和DTD都在这个更大的画面中发挥作用。 - Darren Gourley
无论如何,如果你想要与XHTML兼容性,记住明确写出所有的结束标签只是工作的一部分。使用小写元素名称,引用所有属性值,为所有布尔属性赋予正确的值,包括xmlns命名空间,在适当的地方使用id而不是name,每个<table>中都放置<tbody>的开始和结束标签,避免在脚本中使用&<,永远不要使用document.write或<noscript>,忘记除了五个XML实体引用之外的其他实体引用等等。 - Mr Lister

0

使用https://validator.w3.org/

选择您的标准目标...如果它说通过了,那我认为它足够好了。

请记住,HTML5规范仍在定义/发展中。


0

从技术上讲,只要标记遵循以下条件,您可以完全省略html、head和body标签:

http://www.w3.org/TR/2011/WD-html5-20110525/syntax.html#optional-tags

关于你的评论,提到你的团队一半使用它们,一半不使用,我建议只要任何一个选项符合技术标准,你就选择一个并继续前进,因为整个主题都是开放讨论和解释的。我的个人意见是,如果你有多个人同时在一个项目上工作,那么让你的团队达成共识并产生类似标准的工作可能更重要。

0

您可以省略结束标签。如果您在标签上使用任何属性,显然不能省略开放标签。

这不仅适用于最近的标准,而且从一开始就是如此。(显然,唯一的例外是如果您使用XML语法,因为XML本身要求所有元素都有明确的关闭标签。)

自1990年代以来,浏览器一直在处理缺少尾随关闭标签的HTML文档。如果标准没有允许它们,他们可能仍然会处理它们,就像他们尽力处理各种混乱的代码一样。(这会导致它自己的问题,这是XML不允许可选标签背后的动机之一,但这是另一回事。)

许多人认为这是不好的风格。我也是其中之一。但它肯定得到了广泛的支持。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接