2013-06-13 17 views
7

Fino alle 18:00 circa questo codice sotto avrebbe funzionato bene, ma ora per qualche motivo onStateChange non sta funzionando. Ho provato su più browser e ho avuto amici controllarlo. Vedi qualcosa ovviamente sbagliato?YouTube Iframe API - OnStateChange improvvisamente non funziona

<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

qualsiasi errore nella Console per gli sviluppatori? non ci sono modifiche recenti nell'API: https://developers.google.com/youtube/iframe_api_reference – Raptor

risposta

6

Questo è un problema temporaneo con l'API di iFrame Player. Si può leggere su qui: https://code.google.com/p/gdata-issues/issues/detail?id=4706

Jeff Posnick pubblicato una soluzione temporanea qui: http://jsfiddle.net/jeffposnick/yhWsG/3/

In sostanza, è sufficiente aggiungere il listener evento nell'evento onReady (solo una correzione temporanea):

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

Invece di rispondere a una domanda che è un duplicato di un'altra domanda che hai risposto, contrassegnala come duplicata (flag >> non appartiene qui, o è un duplicato). Ricorda che una domanda senza risposte accettate o up-votate non può essere scelta come quella duplicata. Se nessuna delle domande ha delle risposte, segnalane una per l'attenzione alla moderazione. – kiamlaluno

+0

Buona chiamata, grazie. Sono andato avanti e l'ho contrassegnato come un duplicato. –

-1

La soluzione postato here funziona bene ed è veramente pulito:

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