Youtube APIのはまり事

自作のYoutubeプレーヤーを作成してたら、API経由の動画制御ができずにはまる。起動時の動画読込はできるが、下記問題事象が起きていた。

  • プレーヤーオブジェクトにメソッドが定義されておらず例外発生
  • 動画読込後に呼び出されるはずのonYouTubePlayerReady()も呼び出されない

どうやらWebサーバー上で実行されないといけなかった。ドキュメントにもそう書いてある。

注: Flash Player ではローカル ファイルとインターネット間での呼び出しが制限されているため、これらの呼び出しをテストするには、Web サーバー上でファイルを実行する必要があります。

Webサーバーから呼び出したらうまく実行できた。が、小さい画面で常に最前面表示にして、別作業したいと思っていたけどWebサーバー経由かと思うと、、、これからどうするか悩む。

<html>
<head>
<link rel="stylesheet" href="./js/themes/base/jquery.ui.all.css">
<link rel="stylesheet" href="../demos.css">
<script src="./js/jquery-1.5.1.js"></script> 
<script src="./js/ui/jquery.ui.core.js"></script> 
<script src="./js/ui/jquery.ui.widget.js"></script> 
<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript">
	/////////////////////////
	// player settings
	/////////////////////////
	var playerAreaId = "playerArea";
	var playerId = "ytplayer";
	var params={ allowScriptAccess: "always" };
	var atts={ id: playerId };
	var options = "enablejsapi=1&playerapiid=" + playerId + "&border=0&autoplay=1&loop=1";	// default options
	
	var youtubeUrl = "http://www.youtube.com/v/";
	var currentVideoId = "";  // 任意のビデオID
	
	/////////////////////////
	// methods
	/////////////////////////
	function makePlayer(playerAreaId, options){
		var url = youtubeUrl + currentVideoId + "&" + options;
		swfobject.embedSWF(url, playerAreaId, document.body.clientWidth, document.body.clientHeight, "8", null, null, params, atts);
	}
	
	/////////////////////////
	// initial page settings
	/////////////////////////
	$(function(){		
		// play default movie
		makePlayer(playerAreaId, options);
	});
</script>
</head>
<body>
<!-- player -->
<div id="playerArea"></div>
</body>
</html>