###目的とする仕組み
youtubeとvimeoの読み込みを遅延させるjQueryを書いています。
仕組みとしてはiframeがあったら動画でなくサムネイルを表示し、サムネイルクリックで再生。というものです。
###現状のコードと問題
現状の下記コードのサンプルをJSfiddleで作りました。
https://jsfiddle.net/kt6zm7v8/
jsonによるサムネイル取得などは問題ないはずなのですが、vimeoで動画がそのまま再生されてしまいます。
どのような修正が適切か、どなたかご査収頂けませんでしょうか。
何卒宜しくお願い申し上げます。
jQuery
1 var movies = []; 2 var images = []; 3 4 //全てのiframeタグに対して処理を実行する。 5 $('iframe').each(function(index, element) { 6 7 //iframeの中のsrc(埋め込みタグのURL)を取得。 8 var movie_src = $(this).attr('src'); 9 10 //取得したURLはmovies配列に格納。 11 movies[index] = movie_src 12 13 //サイトで毎に条件を区別し、URLから動画idのみ取得して、文字連結をしてサムネイルを取得。 14 var movie_src_basis = movie_src.split('/')[2]; 15 16 //youtube 17 if( movie_src_basis.match('youtube') || movie_src_basis.match('youtu.be') ) { 18 images[index] = 'http://i.ytimg.com/vi' + movie_src.substring(movie_src.lastIndexOf("/")) + '/maxresdefault.jpg' 19 $(this).after('<img src="' + images[index] + '" class="movie">').remove(); 20 } 21 22 //vimeo 23 if( movie_src_basis.match('vimeo') ) { 24 var movie_src_vimeoID = movie_src.match('[0-9]{9}'); 25 $.getJSON("https://vimeo.com/api/oembed.json?url=https%3A//vimeo.com/"+movie_src_vimeoID+"/").done(function(jsonData) { 26 images[index] = jsonData.thumbnail_url; 27 $(this).after('<img src="' + images[index] + '" class="movie">').remove(); 28 }); 29 30 } 31 32 }); 33 34 $('.movie').each(function(index, element) { 35 //サムネイルがクリックされた時の処理 36 $(this).click(function (){ 37 //iframeに置き換え。 38 $(this).after('<iframe src="' + movies[index] + '?autoplay=1"></iframe>').remove(); 39 }); 40 });

回答2件
あなたの回答
tips
プレビュー