为什么 "script" 需要闭合标签而 "meta" 不需要?

6

我正在编写一个HTML页面,注意到HTML头部标签不是完全一致的。有些标签需要闭合标签,而有些则不需要。

例如,script标签需要闭合标签,但meta不需要。现在我想知道为什么?


https://dev59.com/cnVD5IYBdhLWcg3wE3Xz#206409 - Brad
1
点击这里查看:https://dev59.com/R3VD5IYBdhLWcg3wJIIK - Oriol
2
以上链接都涉及到自闭合标签语法(一种XML概念),而没有解释为什么脚本未被定义为空(因此需要显式关闭)。 - Quentin
可能是为什么自闭合的脚本标签不起作用?的重复问题。 - kenorb
2个回答

10

script 标签不是一个空标签(未关闭的标签)因为它有时包含内容(Javascript 代码),但 meta 标签从不包含。
在网页中有两种方法可以放置 Javascript。第一种方式是包含一个外部文件:

<script src="path/to/my/script.js"></script>
第二种方法是将JavaScript直接放在HTML文件中,像这样:

The second way is to put the Javascript right inside the HTML file, like this:

<script>
  Javascript goes here
</script>

因此有时候,script 标签需要有内容。但是另一方面,meta 标签只需要提供有关当前页面的少量信息,因此空标签就足够了。


1
即将发布相同的答案。从技术上讲,一些浏览器仍然可以使用自闭合脚本标签,但是使用它们是不好的做法。 - KingCronus

2
我认为这只是与当前系统构建相关的任意原因...
“如果有人好奇,根本原因是HTML最初是SGML的一个方言,而SGML是XML的古怪的老兄弟。在SGML领域中,标签可以在DTD中指定为自闭合的(例如BR、HR、INPUT)、隐式可关闭的(例如P、LI、TD)或显式可关闭的(例如TABLE、DIV、SCRIPT)。当然,XML没有这个概念。”
来源:https://dev59.com/R3VD5IYBdhLWcg3wJIIK#3327807

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