【问题标题】:Why are end tags sometimes required and sometimes not?为什么有时需要结束标签,有时不需要?
【发布时间】:2011-06-13 01:37:42
【问题描述】:

为什么有些 html 开始/开始标签需要结束/结束标签?

例如,<script>requires</script>,而<img>can (in fact, must) be self-closing (<img src="path.jpg" />)?

我认为这与要求开始和结束标签之间的内容有关,但对于 <script> 的示例,<script src="file.js"></script> 之间不需要任何内容​​...

我问是因为我花了很多时间试图弄清楚为什么我包含的脚本在 Safari 中工作,但在 FF 或 Chrome 中却没有。这是因为我错误地自行关闭了脚本标签。呵呵。

【问题讨论】:

  • img 是否真的需要在 HTML (4) 中自我关闭?例如。 <img ...> 无效吗? HTML 几乎没有……一致的……XML。 p 呢? :-)
  • 仅供参考,为了与其他支持 HTML5 的浏览器保持一致,Safari 也将很快放弃对自动关闭 <script /> 标记的支持。
  • 最好不要问“为什么”事情是它们在 HTML 解析中的方式。它们通常是一个人当时认为是个好主意的结果,并且现在无法更改向后兼容性。 HTML 语法只是奇怪。克服它:-)
  • ...克服它或使用 XHTML,其中的事情更加一致,并且您会立即收到任何此类问题的警报。

标签: html tags end-tag


【解决方案1】:

自闭标签存在的原因是某些元素自然不会有标签之间的内容。例如,想想<br / 标签。 <br></br> 这样的东西什么时候有用?这真的只是浪费角色空间和时间。这种语法源于 XML 语法并成为 XHTML 的一部分。

确定哪些标签可以/应该自动关闭是由浏览器中的 HTML 解析器决定的。您正在使用的版本的 HTML 规范应该定义处理方式,但当然我们都知道它不一定是这种情况。

这是一篇关于 HTML5(及过去版本)中自闭合标签的精彩文章供您参考。

http://tiffanybbrown.com/2011/03/23/html5-does-not-allow-self-closing-tags/

【讨论】:

    【解决方案2】:

    省略各种结束标记(但不是 XHTML)实际上是有效的 HTML4 和 HTML5。这是一个完整的列表:http://www.w3.org/TR/html5/syntax.html#optional-tags

    此外,还有几个 void 元素根本不能包含任何内容(例如 img)。以下是这些列表: http://www.w3.org/TR/html5/syntax.html#void-elements

    至于脚本标签,有一个很好的 Stack Overflow 讨论: Why don't self-closing script tags work?

    【讨论】:

    • 感谢堆栈溢出链接。搜索但找不到它,但这正是我需要的(在终于找到答案前几个小时......)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 2022-11-11
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多