Chrome と Safari では完全に正常に動作しますが、Firefox では動作しない YouTube Javscript API の実装があります。はい、私はウェブサーバーでこれをやっています;)
ドキュメントの準備ができたら、関数 showVideo(); を呼び出します。
これはすべての関連コードです:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
<div id="ytplayer" class="youtubepromovideo"></div>
<script type="text/javascript">
function showVideo(){
var params = { allowScriptAccess: "always" };
swfobject.embedSWF("http://www.youtube.com/apiplayer?enablejsapi=1&playerapiid=ytplayer", "ytplayer", "400", "400", "8", null, null, params);
}
function onYouTubePlayerReady(playerId) {
console.log("player ready: "+playerId);
loadNewVideo();
}
function loadNewVideo() {
var id = 'jc8n44ddy9A';
var startSeconds = 0;
console.log("loading video");
ytplayer.loadVideoById(id, startSeconds);
}
</script>
すべてのブラウザーでプレーヤーが表示されますが、Firefox ではビデオが読み込まれません。私のログには、Firefox で「動画を読み込んでいます」というメッセージが表示されますが、その後は何も起こりません。エラーすらありません。ytplayer.loadVideoById('jc8n44ddy9A', 0);
すべてがロードされた後に手動で呼び出そうとすると、エラーが発生しますReferenceError: ytplayer is not defined
。
ytplayer が明示的に変数として定義されていないことは認識していますが、私の推測 (?) は、YouTube API が他のブラウザーで動作するため、それを行っているということです。また、どこかでグローバルに定義した場合、var ytplayer
それは修正されません。
どんなアドバイスでも大歓迎です!