HTML中无caption标签用于字幕,正确字幕标签是track,须作为video/audio子元素且kind="subtitles",src指向合法WebVTT文件,srclang符合BCP 47格式。

HTML 中没有 标签用于字幕(subtitles),你遇到的“字幕标签解析报错”,大概率是误用了 、 或手写了不存在的 标签——浏览器直接忽略或报错,根本不会解析为字幕功能。
为什么 不是字幕标签
常见错误现象: 真正支持字幕的原生 HTML 标签只有 正确写法示例: 关键点: 别依赖肉眼观察,很多问题在 DOM 里“看起来正常”,实际被浏览器静默忽略。 第一步:检查控制台是否有媒体相关警告 第二步:确认 第三步:用 务必做到: 是表格()的标题容器,语义上与视频/音频字幕完全无关。写成
放在 里,浏览器既不报错也不渲染,只是当普通文本塞进 DOM;若放在表格外,HTML5 甚至会静默丢弃它。
当作视频下方文字框,结果页面空白或位置错乱Element caption not allowed here,尤其在 或 后调用 element.textContent 能取到值,但无法触发任何字幕行为
才是合法字幕载体,但必须配合 或
,且它必须作为 或 的子元素,且 kind 属性设为 "subtitles"。<video controls><source src="movie.mp4" type="video/mp4"><track kind="subtitles" label="中文" srclang="zh" src="zh.vtt" default></track></source></video>
是 void element,禁止写 或 —— 后者在部分构建工具中会被截断src 必须指向有效的 WebVTT 文件(.vtt),不能是 HTML 片段或内联文本srclang 必须是 BCP 47 格式(如 zh-CN),空值或错写(如 zh)会导致字幕不加载,不会自动显示校验
是否生效的三步实操
Failed to load resource: net::ERR_ABORTED(src 路径 404)Text track language is invalid(srclang 格式错误) 已被识别为启用状态
→ Break on > attribute modification
readyState 始终为 0(TRACK_OFF),说明未加载成功html-validate 拦住源头问题
.htmlvalidate.json 中加规则:"track-required-srclang": true、"track-valid-kind": true
npx html-validate src/**/*.html,自动拦截缺失 srclang 或 kind="metadata" 误配最容易被忽略的兼容性陷阱
在 Safari 和旧版 Edge 中对 WebVTT 的语法极其敏感:一个空行、BOM 头、或注释里的中文标点,都可能导致整条字幕不显示,且控制台零报错。
WEBVTT,后面紧跟空行,不能有空格或注释00:00:01.000 --> 00:00:03.000,毫秒位必须三位 等 HTML 标签——仅支持 、、 等有限样式标签
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











