HTML5 视频隐藏式字幕关闭或打开方法

Dan*_*tti 1 html video jquery

在 HTML5 视频中,当视频的隐藏式字幕打开或关闭时,如何调用函数?

我基本上只想在关闭或打开隐藏式字幕时设置一个 jQuery cookie,以便其他页面上的视频可以默认为用户之前选择的任何内容。

我知道如何做到这一切,我只需要能够在用户打开或关闭隐藏字幕时调用一个函数。它必须类似于 onvolumechange 或 onpause 等,我只是似乎无法找到它是什么。谢谢。

Off*_*mal 9

更新:忽略我之前的答案(在下面留下,以防涉及的逻辑有任何用处)...事实证明,有一个事件显示字幕轨道何时更改:

<video id="video" controls="controls" muted preload="metadata">
  <source src="BigBuck.m4v" type="video/mp4" />
  <track src="entrack.vtt" label="English Captions" kind="subtitles" srclang="en-us" >
</video>

<script type="text/javascript">

function captionStatus() {
    console.log("Mode:-->" + track.mode)
}

var video = document.querySelector('#video');
var tracks = video.textTracks; // one for each track element
var track = video.textTracks[0]; // corresponds to the first track element. If more than one will need to adapt code to select the right one

tracks.addEventListener("change", captionStatus, false);
</script> 
Run Code Online (Sandbox Code Playgroud)

【原创,不太有帮助,回答)

似乎没有一个事件可以添加专门与按钮绑定的侦听器CC,但是,您可以做的是设置一个计时器(或使用与视频上的播放头绑定的事件)来检查textTrack.mode视频元素并使用它:

var videoElement = document.querySelector("video");
var textTracks = videoElement.textTracks; // one for each track element
var textTrack = textTracks[0]; // corresponds to the first track element
var kind = textTrack.kind // e.g. "subtitles"
var mode = textTrack.mode // e.g. "disabled", hidden" or "showing"
Run Code Online (Sandbox Code Playgroud)

...

video.addEventListener('timeupdate',function(){
    // action based on video.textTracks[0].mode;
},false);
Run Code Online (Sandbox Code Playgroud)