2011/08/30

[YouTube]動的ローディング

YouTubeをブログなどに貼り付けるときは、ページ上にあるobjectタグをコピペする方法がありますが、それとは別に、JavaScriptから動的にローディングすることも可能です。

YouTube JavaScript Player API Referenceを読むと、SWFObjectを使った実装方法があるそうです。

それを元にちょっとjQueryでソースを組んでみました。

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="./jquery.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject_src.js"></script>
<script type="text/javascript">
function onYouTubePlayerReady(playerId) {
}

jQuery.extend({
loadYoutube:function(args){
prms = $.extend({
width:"420",
height:"345",
version:"9"
},args);
var params = { allowScriptAccess: "always" };
var atts = {id: prms.embedId};
swfobject.embedSWF(
"http://www.youtube.com/e/" + prms.movieData + "?version=3&enablejsapi=1&hl=ja_JP&playerapiid="+prms.playerId,
prms.id ,
prms.width,
prms.height,
prms.version,
null,
null,
params,
atts
);
}
});

jQuery(document).ready(function(){
jQuery.loadYoutube({
id:"js_movie",
playerId:"ytplayer1",
embedId:"ytPlayer1",
movieData:"R0ks1U2C6aI"
});
});

</script>
</head>
<body>
<div id="js_movie"></div>
</body>
</html>

重要なところは、swfobject.embedSWFメソッドの部分。

「http://www.youtube.com/e/」は固定なのですが、その後に、videoIDをつけて、さらにパラメータを設定する必要があるということ。

上のコードでは、
「version=3&enablejsapi=1&hl=ja_JP&playerapiid=引数で設定されたplayerId」
としていて、ほぼこれは決まり文句のようなもの。

引数で設定したplayerIdは、後で、コールバック関数であるonYouTubePlayerReadyが走ったときに、確認用に使う必要があるので、ここはきちんと設定する必要があります。

atts変数に設定しているidは、こちらも後ほど、動的にYouTubeの動画変更したい場合に必要になるので、同様にきちんと設定の必要ありです。

試したところ、正常に、動画が表示されました。

こうしてテンプレみたいにしておくと後で、コピペですむので、楽かなと。

0 コメント:

コメントを投稿