TextTrackList

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

TextTrackList 接口用于表示与关联的视频或音频元素定义的文本轨道列表,列表中的每个轨道都由一个单独的 TextTrack 对象表示。

可以通过声明性地使用 <track> 元素,或以编程方式使用 HTMLMediaElement.addTextTrack() 方法将文本轨道添加到媒体元素。

可以通过 HTMLMediaElement 对象的 textTracks 属性检索此对象的实例。

对于给定的 HTMLMediaElement 对象 media,可以通过以下方式访问各个轨道:

  • media.TextTracks[n],用于从对象的文本轨道列表中获取第 n 个文本轨道
  • media.textTracks.getTrackById() 方法
EventTarget TextTrackList

实例属性

此接口还继承了其父接口 EventTarget 的属性。

length 只读

列表中轨道的数量。

实例方法

此接口还继承了其父接口 EventTarget 的方法。

getTrackById()

返回 TextTrackListid 与指定字符串匹配的 TextTrack。如果未找到匹配项,则返回 null

事件

addtrack

当新文本轨道已添加到媒体元素时触发。也可通过 onaddtrack 属性访问。

change

当文本轨道变为活动或非活动状态时触发。也可通过 onchange 属性访问。

removetrack

当文本轨道已从媒体元素中移除时触发。也可通过 onremovetrack 属性访问。

用法说明

除了能够直接访问媒体元素上的文本轨道外,TextTrackList 还允许您在 addtrackremovetrack 事件上设置事件处理程序,以便您可以检测到轨道何时被添加到媒体元素的流中或从其流中移除。

示例

获取视频元素的文本轨道列表

要获取媒体元素的 TextTrackList,请使用其 textTracks 属性。

js
const textTracks = document.querySelector("video").textTracks;

监控轨道数量的变化

在此示例中,我们有一个应用程序显示可用频道的数量。为了保持其最新状态,会设置 addtrackremovetrack 事件的事件处理程序。

js
textTracks.onaddtrack = updateTrackCount;
textTracks.onremovetrack = updateTrackCount;

function updateTrackCount(event) {
  trackCount = textTracks.length;
  drawTrackCountIndicator(trackCount);
}

规范

规范
HTML
# text-track-api

浏览器兼容性