2013-06-13 90 views
7

直到美國東部時間下午6點左右,這段代碼才能正常工作,但現在onStateChange因爲某種原因沒有開火。我試過多個瀏覽器,並且有朋友檢查過它。看到什麼顯然不對?YouTube Iframe API - 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"); 

} 
+0

任何錯誤在開發者控制檯? API沒有最近的變化:https://developers.google.com/youtube/iframe_api_reference – Raptor

回答

6

這是iFrame Player API的臨時性問題。你可以在這裏讀到它:https://code.google.com/p/gdata-issues/issues/detail?id=4706

傑夫Posnick發佈了暫時的解決辦法在這裏:http://jsfiddle.net/jeffposnick/yhWsG/3/

基本上,你只需要在onReady事件(只是一個臨時的解決辦法)中添加事件偵聽器:

function onReady() { 
    player.addEventListener('onStateChange', function(e) { 
     console.log('State is:', e.data); 
    }); 
} 
+1

而不是回答與您回答的另一個問題重複的問題,請將其標記爲重複(標記>>它不屬於在這裏,或者它是重複的)。請記住,沒有被接受的或者帶有贊成票的答案的問題不能被選爲重複的答案。如果沒有任何問題有答案,請舉出其中一個以適度關注。 – kiamlaluno

+0

好的電話,謝謝。我已經提前並將其標記爲重複。 –

-1

解決方案發布here工作正常,是真正的清潔:

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 
     } 
    } 
});