昨天(2017 年 6 月 14 日)通过小道消息听说 YouTube iFrame API 发生了一些变化,CC 开始在其中工作。
通过一些测试,我得到了不同的结果(但正在工作):
1) 截至目前(2017 年 6 月 15 日),嵌入视频链接现在显示 CC 按钮,并且如果您之前启用了隐藏式字幕(在本地存储中的“yt-html5-player-modules::”下保持跟踪,则将显示 CC) subtitlesModuleData::启用模块”。
2) 如果您向(iFrame 嵌入的)URL 提供记录的“cc_load_policy=1”参数,则无论本地存储中的值如何,隐藏式字幕都会显示。
3)不起作用的是我加载 iframe 如下:
<iframe
id="futusign_youtube"
style="visibility: hidden;"
frameborder="0"
src="https://www.youtube.com/embed/XIMLoLxmTDw?enablejsapi=1"
></iframe>
然后尝试在playerVars中设置CC策略:
var player = new window.YT.Player('futusign_youtube', {
playerVars: {
'controls': 0,
'enablejsapi': 1,
'showinfo': 0,
'rel': 0,
'cc_load_policy': 1,
},
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange,
'onError': onPlayerError,
}
});
4) 解决方法是将 src 的 URL 上的 cc_load_policy=1 设置为 iFrame。
<iframe
id="futusign_youtube"
style="visibility: hidden;"
frameborder="0"
src="https://www.youtube.com/embed/XIMLoLxmTDw?enablejsapi=1&cc_load_policy=1"
></iframe>