YouTubeプレーヤーAPIでYouTubeを複数設置する

YouTubeプレーヤーAPIを使ってYouTubeを複数設置してみます。
埋め込みはすぐできたのですが、onPlayerReadyで対象がどのプレーヤーなのか判別するのに手間取りました。

サンプルコード

HTML

<div id="sample01"></div>
<div id="sample02"></div>
<div id="sample03"></div>
<div id="sample04"></div>

JavaScript

var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

// 各プレーヤーの格納
var ytPlayer = [];
// プレーヤーのサイズ
var ytWidth = 640;
var ytHeight = 390;
// 各動画情報
var ytData = [
	{
		id: 'NcgBHHMbSGg',
		area: 'sample01'
	}, {
		id: 'wbqOCoBkGvg',
		area: 'sample02'
	}, {
		id: 'idIHKr4GvPY',
		area: 'sample03'
	}, {
		id: 'ke8aMAvP7pk',
		area: 'sample04'
	}
];

// 各プレーヤーの埋め込み
function onYouTubeIframeAPIReady() {
	for(var i = 0; i < ytData.length; i++) {
		ytPlayer[i] = new YT.Player(ytData[i]['area'], {
			width: ytWidth,
			height: ytHeight,
			videoId: ytData[i]['id'],
			playerVars: {
				rel: 0
			},
			events: {
				'onReady': onPlayerReady
			}
		});
	}
}

// 各プレーヤー準備完了後の処理
function onPlayerReady(e) {
	for (var i = 0; i < ytData.length; i++) {
		if(e.target.getIframe().id == ytData[i]['area']) {
			console.log(ytData[i]['area'] + 'のプレーヤー準備完了しました。');
		}
	};
}

YouTubeプレーヤーAPIでYouTubeを複数設置するデモページ

onPlayerReady関数内で対象がどのプレーヤーなのか判別したかったので、getIframe()でDOMノードを取得して、さらにそこからidを取得するようにしています。

player.getIframe() 対象プレーヤーのDOMノードを返す。
player.getVideoUrl() 対象プレーヤーの YouTube.com URLを返す。
player.getVideoEmbedCode() 対象プレーヤーの埋め込みコードを返す。

 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

2件のコメント

  1. […] YouTube Player APIの詳細な説明は『iframe 組み込みの YouTube Player API リファレンス』などに述べられており、参照させていただきました。また、『YouTubeプレーヤーAPIでYouTubeを複数設置する』では、YouTubeをマルチウィンドウで閲覧する例を具体的に解説されています。 […]

  2. […] 埋め込みYoutubeでループ再生時の通信を10分の1にした YouTubeプレーヤーAPIでYouTubeを複数設置する […]

Youtube iframe APIを使ってみよう | S.K Works|鳥取でWebサイト制作 へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年3月
 12
3456789
10111213141516
17181920212223
24252627282930
31