Youtube IFrame APIによる、プレイヤーの初期化では、
playerVars: {}
というオブジェクトで、プレイヤーのオプションを指定できる。
new YT.Player('player', {
playerVars: {
'autoplay': 1,
'controls': 1,
'rel': 0,
'showinfo': 0,
},
videoId: '{youtubeId}',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
playerVarsによるオプションが利いてない?
とくに、rel:0
で関連動画を非表示にするオプションはよく利用されるだろう。
ところが、今日(2018/10/16)実装しようとしたところ、rel:0
を指定しても、関連動画が表示されてしまった。
他のパラメータの機能も確認したところ、(これは勘違いっぽい)showinfo:0
を指定しても動画タイトルの非表示にはならなかった。こちらも意図しない(仕様とは異なる)動作だ。
以前は、関連動画の非表示も動画タイトルの非表示も問題なく指定した通りになっていたはずなのだが・・・
いろいろ検証した結果、FirefoxとSafariでは、機能していることに気づいた。
どうもChromeでのみ機能していないようだった。Chromeの一時的なバグなのだろうか。
Youtubeを運営しているGoogle謹製のブラウザでのみ発生している点が解せない。
2018/10/18追記
ブラウザの問題ではなく、Googleによる仕様変更のようだ。仕様変更は2018/9/25に行われたようだ。
解説している記事を見つけた。
https://www.davideocompany.com/blog/youtube-update-that-will-effect-video-embeds
以下、Googleの発表と思われる箇所を引用。(元記事は見つけられなかったので、引用の引用)
The behavior for the rel parameter is changing on or after September 25, 2018. The effect of the change is that you will not be able to disable related videos. However, you will have the option of specifying that the related videos shown in the player should be from the same channel as the video that was just played.
要約すると
rel
パラメータの働きが変わって、(rel:0
にすることで)関連動画の非表示はできなくなるけど、その代わりに関連動画を同じチャンネルの動画に限定する機能になる。
ということのようだ。
関連動画にユーザーに見せたくない動画(競合他社の動画とか)が並ぶわけじゃないからいいだろ、ということなのかな。引用させてもらった元記事の人は、
でもよお、表示された関連動画をユーザーがポチったら、自分のサイトから離脱してyoutubeに飛んじまうんだぜ!
そんで、youtubeでは他のユーザーの動画が勝手に表示されて、再生されるんだぜ。
って怒っている様子だ。ご指摘ご尤も。
とにかく、動画再生終わった後に、だらだらと他の動画のサムネイルが表示されるダサい感じになるのはもう回避不能らしい。合掌。