2012-11-21 3 views
4

Ma page contient cette étiquette <video> avec plusieurs sous-titres <track> s. Je voudrais permettre à la volée la piste en cliquant sur le drapeau national correspondant en utilisant jquery:Comment changer la piste par défaut d'un élément vidéo html5?

<div id="lang"> 
    <img src="mini/ita.png" class="it" alt="Italiano" title="Italiano" /> 
    <img src="mini/eng.png" class="en" alt="English" title="English" />   
    </div> 


<video controls="controls" > 

    <source src="webcast.webm" /> 
    <source src="webcast.mp4" /> 
    <source src="webcast.ogv" /> 

    <track kind="subtitles" src="./sub-en.vtt" srclang="en" /> 
    <track kind="subtitles" src="./sub-it.vtt" srclang="it" /> 

</video> 

<script> 
$('#lang img').click(function(){ 
    language=$(this).attr('class'); 

    $('video track').removeAttr('default'); 
    $('video track[srclang='+language+']').attr('default','default'); 
}); 
</script> 

L'attribut « par défaut » est insérée correctement, mais aucun sous-titre est displaied. L'insertion manuelle de l'attribut par défaut fonctionne parfaitement (sur chrome et opéra).

+0

Au moment où vous définissez l'indicateur par défaut de js, un navigateur a probablement déjà choisi par défaut. Vous pouvez essayer de définir la propriété textTrack.mode sur "show" sur la piste souhaitée. –

Répondre

0
<script> 
$('#lang img').click(function(){ 
    var language=$(this).attr('class'); 

    $($('video').prop('textTracks')).prop('mode', function(){ 
     return this.language == language ? 'showing' : 'disabled'; 
    }); 
}); 
</script> 
+0

Merci. Malheureusement, votre solution ne fonctionne pas. –

+0

travaille pour moi. voir ici: http://corrupt-system.de/track.html –

+0

Ceci est très lourd. Votre exemple lié ** ne démarre pas ** sur le chrome 22; ** show subs ** dans Firefox 17; ** ne montre pas les sous-marins ** dans l'opéra 12. [Mon exemple] (http://ross.iasfbo.inaf.it/~gloria/eclipse/test.html), construit en utilisant vos suggestions, ne fonctionne pas sur tous l'arbre. –

0
$('#lang img').click(function(){ 
    language=your value; 
    $('#yourID').attr('srclang', language); 
}); 

font comme ça ..

Questions connexes