3

YouTubeプレーヤーAPIを使用しています。ここのドキュメントに従っています:

http://code.google.com/apis/youtube/js_api_reference.html

プレーヤーにイベント リスナーを追加する際に問題が発生しました。呼び出されることのないアラートステートメントを直後に置きます。

ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
alert("I never get called...");

なぜこれが起こるのでしょうか?FF chrome safari で実行すると、すべて同じことが起こります。他のプレーヤー機能はすべて正常に動作します。swfobject バージョンを使用しています。これもサーバーからライブで実行しています。理解できません。

ありがとう

4

3 に答える 3

1

window.onytplayerStateChange = function のように、コールバックをグローバル名前空間に配置します。

かなりくだらないですが、コールバックを正常に機能させることができた数少ない方法の1つです。addEventListener は、グローバル名前空間で文字列を介してルックアップを行うネイティブ コードをオーバーライドするカスタム関数であるためだと言われました。

于 2013-01-19T22:45:02.670 に答える
1

このページのソース コードを見てください。正しい方向に進むことができるかもしれません。ビデオの下の数字は、実装しようとしている方法でキャプチャおよび更新されたビデオの状態です

var ytplayer;

function onytplayerStateChange(newState) {
    document.getElementById('videoStatus').innerHTML = newState;
}

function onYouTubePlayerReady(playerId) {
    ytplayer = document.getElementById(playerId);
    ytplayer.addEventListener('onStateChange', 'onytplayerStateChange');
}

$(document).ready(function() {

    var params = {
        allowScriptAccess: "always"
    };

    var atts = {
        id: "ytplayer1"
    };

    swfobject.embedSWF("http://www.youtube.com/v/5dWnMu490Zk?rel=0&autoplay=1&enablejsapi=1&playerapiid=ytplayer1", "popupVideoContainer1", "853", "505", "9", null, {}, params, atts);

});
<div id="popupVideoContainer1">You need Flash and JavaScript in order to view the video.</div>
<div id="videoStatus">status</div>

于 2010-06-01T09:15:40.927 に答える
0

バグだと思います。これが私のために働いた解決策です:

Player URL では、? の後に「&」を含める必要があります。したがって、例は次のとおりです。

VIDEO_ID?enablejsapi=1&playerapiid=ytplayer

ただし、代わりにこれを使用します。

VIDEO_ID?&enablejsapi=1&playerapiid=ytplayer

(「有効」の前の & に注意してください)

あまり意味がありませんが、現在は機能しています:)

于 2010-07-15T13:43:14.437 に答える