YouTube onStateChange事件突然无法正常工作

时间:2016-09-28 09:09:03

标签: javascript javascript-events youtube-api swfobject

直到大约两周前,我的一切工作正常。我没有更改任何代码。

function loadYtVideo(video, advert, advert_link, splash, splash_link){
   var params  = { allowScriptAccess: "always", wmode: "transparent" };
   var atts    = { id: "eda-player", wmode: "transparent" };
   var swfobject;
   adv.orig    = video;
   swfobject.embedSWF("https://www.youtube.com/v/"+adv.orig+"?rel=0&enablejsapi=1&playerapiid=ytplayer","ytapiplayer", "719", "404", "8", null, null, params, atts);
}

function onYouTubePlayerReady(playerId) {
    //It's fired
    edaplayer = document.getElementById('eda-player');
    edaplayer.addEventListener("onStateChange", "playerState");
}

function playerState(state) {
    //it's not fired
    console.log(state);
}

<div class="adv-video">
   <div id="ytapiplayer">
       <script>
           $(document).ready(function(){
               loadYtVideo($.getUrlVar('ytVideo'), 'eM2ja9LE0YE', 'http://wilmax.ru/', '', '');
           });
       </script>
   </div>
</div>

我发现有类似问题的帖子,但这些帖子中的解决方案在这种情况下不起作用。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我建议你转到YouTube IFrame Player API

  

IFrame播放器API可让您在网站上嵌入YouTube视频播放器,并使用JavaScript控制播放器。与FlashJavaScript播放器API不同,后者都涉及在您的网页上嵌入Flash对象,IFrame API会将内容发布到您的 typedef int (*func)(int); func make_adder(int a) { int add(int x) { return a + x; } return &add; } int main() { func add_42 = make_adder(42); // add_42(10) == 52 } 标记上页。这种方法比以前提供的API更灵活,因为它允许YouTube为不支持Flash的移动设备提供HTML5播放器而不是Flash播放器。

Flash APIJS API已被弃用。我不确定它是否仍适用于当前的API,因此我建议您使用Iframe API

以下是一些可能对您有所帮助的消息来源:

希望这有帮助!