私はしばらくの間これに頭をぶつけてきました、そしていくつかの新鮮な目を必要とします:
埋め込まれた動画の状態が変化したときに、YouTubeJSAPIを使用して関数を呼び出そうとしています。しかし、何らかの理由でイベントが発生していないようで、コンソールでエラーが発生していません。
HTML:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="630" height="350" id="bannerVideo">
<param name="movie" value="http://www.youtube.com/v/6Yfd1uGYgk8?enablejsapi=1&version=3&playerapiid=ytplayer" />
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="http://www.youtube.com/v/6Yfd1uGYgk8?enablejsapi=1&version=3&playerapiid=ytplayer" width="630" height="350">
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<!--<![endif]-->
<a href="http://www.adobe.com/go/getflashplayer">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
</a>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
Javascript:
function onYouTubePlayerReady(playerId) {
//alert(playerId);
ytplayer = document.getElementById("bannerVideo");
//alert(2);
ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
//alert(3);
//ytplayer.addEventListener("click", function(){alert('click');});
}
function onytplayerStateChange(newState) {
alert("Player's new state: " + newState);
}
サンプルサイト: http ://dev.stewartknapman.com/ytPlayer/
私が使用しているコードは、youtube apiサイトからの直接のコピー&ペーストであり、コードを埋め込むためにswfオブジェクトを使用しています。phpでいくつかのものを変更するので、静的埋め込みを使用していますが、これは問題ではありません...そうですか?テストのためだけにすべてのコードを独自のファイルに移動し、開発サーバーでホストしているため、サンドボックスの問題にはなりません。また、addEventListener関数が失敗していないことを確認するために、すべての行の後にアラートを送信しようとしました。(サンプルコードにアラートを残しましたが、コメントアウトしました。)
このエラーに関する以前の投稿を検索した後、正しい要素にIDを追加するか、コールバック関数を文字列として解析することで、すべて解決されたことがわかりました。だから私はこれらのことを2回と3回チェックしますが、それは問題ではないようです。
どんな助けでも大歓迎です。