7

EST の午後 6 時頃までは、以下のコードは正常に機能していたはずですが、何らかの理由で onStateChange が起動しません。複数のブラウザで試してみて、友達にチェックしてもらいました。明らかに間違っていることがわかりますか?

<div id="video">
  <div id="player_wrap">
    <div id="player"></div>
  </div>
</div>

   <script>

    var tag = document.createElement("script");
    tag.src = "http://www.youtube.com/iframe_api";
    var firstScriptTag = document.getElementsByTagName("script")[0];
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

    function onYouTubeIframeAPIReady() {
    var player;

        player = new YT.Player("player", {
          width: 640,
          height: 400,
          videoId: "MbfsFR0s-_A",
          events: { 
            'onReady': onPlayerReady, 
            'onStateChange': onPlayerStateChange          
          }
        });
      }

function onPlayerReady() {

alert ("player ready"); 

}


function onPlayerStateChange(event) {

alert ("something happened"); 

}
4

2 に答える 2

6

これは iFrame Player API の一時的な問題です。ここでそれについて読むことができます: https://code.google.com/p/gdata-issues/issues/detail?id=4706

Jeff Posnick が一時的な回避策をここに投稿しました: http://jsfiddle.net/jeffposnick/yhWsG/3/

基本的には、onReady イベント内にイベント リスナーを追加するだけです (一時的な修正にすぎません)。

function onReady() {
    player.addEventListener('onStateChange', function(e) {
        console.log('State is:', e.data);
    });
}
于 2013-06-13T04:39:35.353 に答える
-1

ここに投稿されたソリューションは正常に機能し、非常にクリーンです。

player = new YT.Player(element,{
    events: {
        onReady: function(){
            /*
            Do your stuff
            */
            // Attach a void function to the event
            player.addEventListener('onStateChange',function(){});
        },
        onStateChange: function(){
        // Actual function that gets executed during the event
        }
    }
});
于 2013-09-02T04:34:29.080 に答える