动态更改字幕视频 - HTML5

时间:2016-07-13 07:06:41

标签: javascript jquery html5 video

我正在尝试使用以下代码行动态更改字幕轨道。但是它没有更改字幕。为什么?



$('#turnoff').click(function(){
  $('.player-content-video track').attr('default',false);
});

$('#english').click(function(){
  $('.player-content-video track').attr('default',false);
   $('.player-content-video track').eq(0).attr('default',false);
});

$('#chinese').click(function(){
   $('.player-content-video track').eq(1).attr('default',false);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<video class="player-content-video">
  <track src="sample_video-en.vtt" srclang="en" kind="subtitles" default="true">
  <track src="sample_video-ch.vtt" default="false" srclang="ch" kind="subtitles">
  <source src="http://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">
</video>
<br/>
<button id="turnoff" >NO SUBTITLE</button>
<button id="english" >ENGLISH</button>
<button id="chinese" >CHINESE</button>
&#13;
&#13;
&#13;

注意:此示例中的track src仅用于代码演示。

1 个答案:

答案 0 :(得分:2)

如果您需要更改var host = Dns.GetHostEntry(Environment.UserDomainName); host.HostName.Dump(); 标记的default属性,可以使用以下脚本:

工作示例,请检查DOM以查看结果(因为视频和轨道src不存在):

https://jsfiddle.net/3hh9kvgd/

您可以通过以下方式使用jQuery trackMore info can be found here.

:eq() Selector

顺便使用$('.player-content-video track:eq(0)')使您的代码依赖于DOM中的:eq()位置,并且当用户点击按钮时需要横向所有DOM,这在术语可维护性和性能方面不是很好的方法

您可以使用id引用<track>并在使用jQuery时缓存DOM选择。

<track>
    $('#turnoff').click(function(){
       $('.player-content-video track').attr('default',false);
    });

    $('#english').click(function(){
       $('.player-content-video track').attr('default',false);
       $('.player-content-video track:eq(0)').attr('default',true);
    });

    $('#chinese').click(function(){
       $('.player-content-video track').attr('default',false);
       $('.player-content-video track:eq(1)').attr('default',true);
    });