You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

错误HTML5代码解析疑问:video标签结束标签应插入何处?

问题解答

首先明确:Chrome和Safari的处理是符合HTML5规范的,JSoup的处理不符合。

核心原因拆解

  1. 自闭合标签的规则
    HTML5里只有void元素(比如<img>、<br>、<input>这类本身不需要闭合的元素)才能用<tag/>的自闭合语法。<video>属于非void元素,标签末尾的/会被解析器直接忽略,等同于只写了<video autoplay="" id="remote" width="240">,没有闭合标签。

  2. 未闭合video的解析逻辑
    HTML5解析器在遇到未闭合的<video>后,会进入“处理video内部内容”的状态,直到遇到能触发video闭合的条件:要么是明确的</video>标签,要么是整个<body>结束(此时会自动闭合所有未闭合的流元素)。

而<script>元素属于流内容的一种,根据HTML5规范,<video>的内容模型允许包含流内容,所以解析器不会在遇到<script>时自动闭合<video>,自然会把<script>及其内容包裹在<video>内部。

HTML5规范的相关位置

  • 关于void元素和自闭合语法:规范中明确列出了所有void元素,同时指出非void元素的自闭合斜杠属于“解析错误”,会被忽略,不会触发元素闭合。
  • 关于video元素的解析规则:在HTML5解析器的“in body”状态章节下,针对video元素的处理逻辑说明:解析器会持续处理子内容,直到遇到闭合标签或触发元素闭合的其他条件(如body结束)。
  • 关于元素内容模型:video元素的内容模型允许包含零个或多个流内容,而script属于流内容范畴,因此script可以作为video的子元素存在(尽管实际场景中没有实用价值)。

内容的提问来源于stack exchange,提问作者Michael Kay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:05:37