埋め込み動画には YouTube の API を使用しています。すべてのページのすべての動画にまったく同じ API コードを使用しています。ただし、ある特定のビデオでは、字幕が読み込まれますが、最初の実行のみです。更新を押すと、字幕が消えます。キャッシュと Cookie をクリアすると、元に戻ります。
この動作が 1 つの動画で見られるのに、同じコードを共有する他の動画では見られないのはなぜですか?
わかりましたので、HTMLタグは次のとおりです。
<div id="youTube" data-video-id="[YouTube video ID here]"></div>
APIコードは次のとおりです。
window.onYouTubeIframeAPIReady = function () {
player = new YT.Player('youTube', {
videoId: $("#youTube").data("videoId"),
playerVars: {
'rel': 0,
},
events: {
'onReady': function () {
player.unMute();
player.setVolume(35);
player.playVideo();
},
'onStateChange': function () {
if (player.getPlayerState() == 2 && !counted) {
viewCount++;
counted = true;
}
}
}
});
}
ああ、ここにいくつかの関連情報があります:
このバグはどのクライアントでも繰り返される可能性があり、サーバーにデプロイされた場合でも、localhost からデプロイされた場合でも表示されます。
「cc_load_policy」を使用して字幕を削除できません: 0,
YouTube.com で動画を視聴すると字幕が表示されない
完全な API の代わりに iframe 埋め込みコードを使用すると、字幕が表示されません。
繰り返しになりますが、同じ API コードを共有し、字幕のバグがない他の動画があります。
* アップデート *
わかりました。他の動画でも同じ動作が見られます。これは以前はなかったので、YouTube 側の問題だと思います。
…とはいえ、これについて調べるのにまだ助けが必要です。ここにjsfiddleがあります: