0

私はしばらくの間これに頭をぶつけてきました、そしていくつかの新鮮な目を必要とします:

埋め込まれた動画の状態が変化したときに、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回チェックしますが、それは問題ではないようです。

どんな助けでも大歓迎です。

4

1 に答える 1

1

SWFObjectメソッドを使用してフラッシュ埋め込みを初期化してみましたか(YouTube APIで概説されています)?

var params = { allowScriptAccess: "always" };
var atts = { id: "myytplayer" };
swfobject.embedSWF("http://www.youtube.com/v/VIDEO_ID?enablejsapi=1&playerapiid=ytplayer&version=3",
                   "ytapiplayer", "425", "356", "8", null, null, params, atts);

タグを上記に置き換えて、セットアップに合わせて構成します。

于 2012-04-04T03:12:17.923 に答える