TextTrackList 的实现
如果您没有阅读,请先参考此网址。
https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList
它提到了
onremovetrack
发送 removetrack 事件时调用的事件处理程序,指示文本轨道已从媒体元素中删除。
HTML
<video src="foo.ogv">
<track kind="subtitles" label="English subtitles" src="subtitles_en.vtt" srclang="en" default>
</track>
<track kind="subtitles" label="Deutsche Untertitel" src="subtitles_de.vtt" srclang="de">
</track>
</video>
videoElement.textTracks 控制台输出
var videoElement = document.querySelector("video");
console.log(videoElement);
//output
TextTrackList {0: TextTrack, 1: TextTrack, length: 2, onchange: null, onaddtrack: null, onremovetrack: null}
0: TextTrack {kind: "subtitles", label: "English subtitles", language: "en", id: "", mode: "showing", …}
1: TextTrack {kind: "subtitles", label: "Deutsche Untertitel", language: "de", id: "", mode: "disabled", …}
length: 2
上面引用的意思是当 Video DOM 元素被移除时会触发 onremovetrack。请参阅此示例。
videoElement.textTracks.onremovetrack = function(event){
console.log('DOM removed',event)
}
videoElement.removeChild(videoElement.children[0])
//output
DOM removed TrackEvent {isTrusted: true, track: TextTrack, type: "removetrack", target: TextTrackList, currentTarget: TextTrackList, …}
删除曲目
var videoElement = document.querySelector("video");
videoElement.removeChild(videoElement.children[0]); //remove English subtitle
// you need iterlate videoElement.textTracks and find index according to language
var i =0;
var targetLanguage = "de";
for (let track of videoElement.textTracks){
if(track.language !== targetLanguage){
videoElement.removeChild(videoElement.children[i]);
}
i++;
}
禁用跟踪
videoElement.textTracks[0].mode = "disabled"; // Disable English
videoElement.textTracks[1].mode = "showing"; // Enable Deutsche