2013-06-13 35 views
7

Cho đến khoảng 6 giờ tối EST mã này bên dưới sẽ hoạt động tốt, nhưng hiện tại vì một số lý do onStateChange không kích hoạt. Tôi đã thử trên nhiều trình duyệt và đã có bạn bè kiểm tra nó. Thấy bất cứ điều gì rõ ràng là sai?API iframe của YouTube - OnStateChange đột nhiên không hoạt động

<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

bất kỳ lỗi trong phát triển điều khiển? không có thay đổi gần đây trong API: https://developers.google.com/youtube/iframe_api_reference – Raptor

Trả lời

6

Đây là sự cố tạm thời với API trình phát iFrame. Bạn có thể đọc về nó ở đây: https://code.google.com/p/gdata-issues/issues/detail?id=4706

Jeff Posnick đăng tải một workaround tạm thời ở đây: http://jsfiddle.net/jeffposnick/yhWsG/3/

Về cơ bản, bạn chỉ cần thêm người nghe sự kiện trong sự kiện onready (chỉ cần một sửa chữa tạm thời):

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

Thay vì trả lời câu hỏi trùng lặp với một câu hỏi khác mà bạn đã trả lời, hãy gắn cờ câu hỏi đó là trùng lặp (cờ >> nó không thuộc về ở đây, hoặc nó là một bản sao). Hãy nhớ rằng không thể chọn câu hỏi mà không được chấp nhận hoặc trả lời bình chọn lên như câu hỏi được sao chép. Nếu không có câu hỏi nào có câu trả lời, hãy gắn cờ một trong số các câu hỏi đó để thu hút sự chú ý. – kiamlaluno

+0

Cuộc gọi tốt, cảm ơn bạn. Tôi đã đi trước và gắn cờ nó là bản sao. –

-1

giải pháp posted here hoạt động tốt và là REALLY sạch:

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 
     } 
    } 
}); 
Các vấn đề liên quan