2013-06-13 2 views
7

До приблизительно 6 вечера EST этот код ниже работал бы хорошо, но теперь по какой-то причине 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

Это временная проблема с API-интерфейсом iFrame. Вы можете прочитать об этом здесь: 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 
     } 
    } 
}); 
Смежные вопросы