【问题标题】:YouTube onStateChange event is suddenly not workingYouTube onStateChange 事件突然不起作用
【发布时间】:2023-04-04 04:26:01
【问题描述】:

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

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>

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

【问题讨论】:

    标签: javascript youtube-api dom-events swfobject


    【解决方案1】:

    我建议你转到YouTube IFrame Player API:

    IFrame 播放器 API 可让您在自己的网站上嵌入 YouTube 视频播放器并使用 JavaScript 控制播放器。与 FlashJavaScript 播放器 API 不同,它们都涉及在您的网页上嵌入 Flash 对象,IFrame API 将内容发布到您网页上的 &lt;iframe&gt; 标记。这种方法提供了比以前可用的 API 更大的灵活性,因为它允许 YouTube 为不支持 Flash 的移动设备提供 HTML5 播放器而不是 Flash 播放器。

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

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

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2012-04-17
      • 2013-06-09
      • 2014-08-28
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 2014-11-16
      相关资源
      最近更新 更多