Javascript HTML5视频:如何关闭字幕

Javascript HTML5视频:如何关闭字幕,javascript,jquery,html,Javascript,Jquery,Html,我正在创建一个HTML5视频播放器,希望有一个按钮可以打开和关闭字幕。要关闭它们,我将默认轨迹的mode属性设置为hidden,但它们不会在Chrome 66中消失 下面是jQuery的一行,它应该关闭字幕,因为玩家的id是玩家: $"#player track").eq(0).attr("mode", "hidden"); 模式属性更改为隐藏在DOM中,但字幕仍然可见。你知道为什么会这样吗?在我的评论中进一步阐述;你应该尝试的是禁用所有曲目上的字幕,以防你有多个字幕。 使用jQuery可能有

我正在创建一个HTML5视频播放器,希望有一个按钮可以打开和关闭字幕。要关闭它们,我将默认轨迹的mode属性设置为hidden,但它们不会在Chrome 66中消失

下面是jQuery的一行,它应该关闭字幕,因为玩家的id是玩家:

$"#player track").eq(0).attr("mode", "hidden");

模式属性更改为隐藏在DOM中,但字幕仍然可见。你知道为什么会这样吗?

在我的评论中进一步阐述;你应该尝试的是禁用所有曲目上的字幕,以防你有多个字幕。 使用jQuery可能有一种更简单的方法,但是我从来没有使用jQuery与html5播放器合作过,因此我的答案是

var video = document.querySelector('#player');

for (var i = 0; i < video.textTracks.length; i++) {
   video.textTracks[i].mode = 'hidden';
}

$player track应该抛出一个错误,如果这是您在代码中得到的。它应该是$player曲目。检查开发人员工具>控制台是否有错误是个好主意。@Adriani6 OP提到他们看到DOM中的属性发生了变化,我想这只是问题中的一个输入错误。@TylerRoper Oops,完全错过了最后一行……嗯;你应该迭代视频中的所有曲目,并将它们设置为隐藏,而不仅仅是第一个。我同意@Adriani6,尽管你可能只需要执行$player track.attrmode,hidden;将所有轨迹模式设置为隐藏,无需迭代。这确实是一种方法,即使我们知道哪个是活动的,实际上不需要循环所有TextTrack,但OP的问题是它们设置了track元素的mode属性。这些元素没有这样的属性,实际上最好的方法是转到视频的TextTrackList。track元素本身会产生什么影响?我们必须修改它的一个真实属性,例如src,或者将其从DOM中删除,但是当我们只想关闭一个不是元素的TextTrack时,这显然不是正确的方法