javascript - 如何在 Safari 中隐藏视频字幕?

标签 javascript html

我为我的视频设置了字幕。据我所知,textTracks 是适用于 Chrome 和 FireFox 的正确方法。我找不到 Safari 的任何类似内容。他们希望我添加和删除标签来隐藏和显示字幕吗?

我在其他浏览器中运行的代码很简单:

function setMode() {
  videoTag.textTracks[0].mode = isOn ? 'showing' : 'hidden';
}

在加载页面时,我看到了 textTracks:

enter image description here

由于某种原因,它后来显示了两个 textTracks,其中第二个是空的。

enter image description here

我最近尝试的完整代码是:

let isOn = false;
const videoTag = doc.getElementsByTagName('video')[0];
const trackTag = doc.createElement('track');
const id = win.ccv$serverData.ccvid;

function setMode() {
  console.log([...videoTag.textTracks]);
  const tracks = [...videoTag.textTracks].filter(t => t.kind === 'captions');
  tracks.forEach(track => {
    console.log('updating', track);
    track.mode = isOn ? 'showing' : 'hidden';
    console.log(track.mode);
  });
}

trackTag.setAttribute('default', '');
trackTag.setAttribute('src', `/api/video/${id}/captions`);
trackTag.setAttribute('kind', `captions`);

videoTag.appendChild(trackTag);

setMode();

最佳答案

您可以尝试删除 <track>元素:

[...document.querySelectorAll("track")].forEach((track) => track.remove());

另一种方法是使用 CSS:

track {
  display: none !important
}

祝你好运。

关于javascript - 如何在 Safari 中隐藏视频字幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56430084/

相关文章:

javascript - 调度 Action 创建者语法react-redux

javascript - 替换字符串的特定标签

javascript - 如何用 JavaScript 获取 Screen 设置的宽度

javascript - HTML 布局随 JS 或 CSS 变化?

javascript - 正则表达式匹配不是由所有相同号码组成的电话号码

javascript - 如何修改此 jQuery 以在下拉列表中动态显示和隐藏相关选择选项?

javascript - jquery部分展开和折叠

javascript - 没有jquery的Bootstrap框架

html - 为图像创建网格布局

html - 如何在没有 GO 按钮的情况下创建下拉列表超链接?