2016-07-13 26 views
5

Aşağıdaki kod satırlarını kullanarak altyazı parçalarını dinamik olarak değiştirmeye çalışıyorum.Ama altyazıları değiştirmiyor musunuz?Altyazıyı dinamik olarak değiştirin - HTML5

$('#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>

NOT: bu örnekte tracksrc sadece kod gösteri içindir. Eğer aşağıdaki komut dosyasını kullanabilirsiniz sizin track etiketinde default niteliğini değiştirmek gerekiyorsa

+2

değiştirmek gerekir bu konuda https://developer.mozilla.org/en-US/Apps/Fundamentals/Audio_and_video_delivery/Adding_captions_and_subtitles_to_HTML5_video#Subtitle_implementation MDN makalesine edin 'video.textTracks' dizi özelliği – casraf

+0

dizininin 'öğeleri' notu, stacksnippets'de' track' öğesinin kaynağı tam yol değil – guest271314

+0

Trach src yalnızca gösterim için – Shin

cevap

2

:

Çalışma örneği, (video ve iz src mevcut değilse) sonucunu görmek için DOM inceleyin lütfen:

https://jsfiddle.net/3hh9kvgd/

aşağıdaki şekilde jQuery :eq() Selector kullanabilirsiniz. More info can be found here.

:eq() DOM içinde <track> pozisyonun bağımlı kodunuzu yapmak kullanarak arada $('.player-content-video track:eq(0)')

ve enine tüm DOM gerektirdiğinde vadeli sürdürülebilirlik ve perfomance gerçekten iyi bir yaklaşım değildir bir düğmeye, Kullanıcı tıklama .

Bunun yerine <track> numaranızı referans alarak jQuery'yi kullanırken DOM seçiminizi önbelleğe alabilirsiniz.


$('#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); 
    }); 

<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="myvideo.mp4" type="video/mp4"> 
</video> 
<br/> 
<button id="turnoff" >NO SUBTITLE</button> 
<button id="english" >ENGLISH</button> 
<button id="chinese" >CHINESE</button> 
+0

Bu kod parçaları değiştirmiyor – Shin

+0

@ShijinTR y Biraz daha detaylandırır mısın? Cevabımdaki kod, kullanıcının hangi parçayı seçtiğine bağlı olarak DOM ekleyerek varsayılan etiketi değiştirir. Lütfen gerçek izninizle tam bir keman oluşturun, böylece sorununuzu doğru bir şekilde ayıklayalım. – GibboK

+0

DOM değişiyordu, Ama videodaki parça güncellenmiyor – Shin