label属性用于在浏览器字幕菜单中显示轨道名称,必须与kind和srclang配合使用;单独设置无效,且需确保同一kind与srclang下label唯一,长度宜≤20字、不含HTML。
label 是 <track> 元素的必需属性之一,但它不是给字幕“内容”起名,而是给浏览器字幕菜单里显示的选项起名。用户点开视频右下角的「字幕」按钮时看到的那行文字(比如“中文(简体)”“English”),就来自这个 label 值。
单独写 label="中文" 不会生效,浏览器可能直接忽略整条 <track>。它需要配合两个关键属性:
kind="subtitles"(或 "captions"、"descriptions" 等合法值)——告诉浏览器这是哪类轨道srclang="zh"(语言代码必须规范)——否则 Chrome 会拒绝显示该条目,连 label 都不渲染错误示例:<track kind="subtitles" label="中文">(缺 srclang,菜单里看不见)
正确写法:<track kind="subtitles" label="中文(简体)" srclang="zh" src="zh.vtt">
立即学习“前端免费学习笔记(深入)”;
浏览器字幕菜单 UI 空间有限,过长的 label 会被截断甚至导致排版错乱。更关键的是,它不解析 HTML 实体或标签:
label="中文 & English" → 菜单显示 “中文 & English”,不是 “中文 & English”label="中文<br>English" → 直接原样显示,不会换行label=""(空字符串)→ 多数浏览器会 fallback 到 srclang 值,但行为不一致,别依赖推荐写法:label="简体中文" 或 label="English (CC)"
同一视频加载多个 <track>,如果 label 相同(比如都写 "中文"),Chrome 和 Safari 可能只显示第一个,其余被静默丢弃——不是 bug,是规范要求:同一 kind + 同一 srclang 下,label 必须唯一。
label="中文(简体)" + srclang="zh",label="中文(繁體)" + srclang="zh-Hant"
label="中文" + srclang="zh",label="中文" + srclang="zh-Hans"(Chrome 认为语种重叠,后一条不进菜单)真正起决定作用的是 srclang 的 BCP 47 规范匹配,label 只是给人看的,但人看的部分一旦重复,机器就懒得给你展示。