同一ページ内に複数のYouTubeを埋め込むと、ページの読み込みが重くなってしまいます。
その対応として、初期表示はサムネイル画像を表示して、サムネイルをクリック後にYouTubeを埋め込むようにしてみます。
サンプルコード
HTML
#sample1~#sample3にサムネイル画像が入ります。
<div id="contents"> <div class="ytBox"> <div id="sample1"></div> </div> <div class="ytBox"> <div id="sample2"></div> </div> <div class="ytBox"> <div id="sample3"></div> </div> </div>
CSS
サムネイル画像にオンマウス時にカーソルが変わるようにしておきます。
.ytBox img { cursor: pointer; }
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 = 480; // 各動画情報 var ytData = [ { id: 'TSbSzrLffew', area: 'sample1' }, { id: 'fQ_m5VLhqNg', area: 'sample2' }, { id: 'p3ih4rDduug', area: 'sample3' } ]; // サムネイルの埋め込み function onYouTubeIframeAPIReady() { for(var i = 0; i < ytData.length; i++) { // サムネイルの埋め込み document.getElementById(ytData[i]['area']).innerHTML = '<img id="yt-thumb' + i + '" src="http://i.ytimg.com/vi/' + ytData[i]['id'] + '/sddefault.jpg">'; // 埋め込んだサムネイルにイベント追加 ytEmbedding(i); } } // プレーヤーの埋め込み function ytEmbedding(i) { document.getElementById('yt-thumb' + i).addEventListener('click', function() { 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) { e.target.playVideo(); }
コメントが承認されるまで時間がかかります。