3

我正在 Win/mac chrome 和 firefox、iPad、iPhone、Android 4.3、Android 4.1.2 和 Android 2.3.7 上测试我的主干应用程序。Youtube iFrame API 在除 Android 2.3.7 之外的所有平台上使用本机浏览器按预期工作。我已将其追踪到 YT.Player() 返回的对象,该对象从未触发其 onReady 事件或与此相关的任何其他事件。

onYoutubeIframeAPIReady 在所有测试中都被调用,并且播放器正在被实例化,但是有些东西阻止了“onReady”事件的触发。

我已经看到其他一些帖子在其他浏览器中引用了类似的问题,但普遍的反应只是这是一个“老错误”,应该已经解决了;但是,我只是在纯 HTML 页面上尝试了 YT.Player 的基本实现,它在 2.3.7 本机浏览器中工作,因此它似乎不是 Youtube、浏览器或服务器问题。不确定这里会发生什么,因为代码在所有浏览器中都是相同的,并且正在处理其他所有内容。任何帮助,将不胜感激!

代码:

_injectScript: function(){
  var tag = document.createElement('script');
  tag.src = "https://www.youtube.com/iframe_api";
  var firstScriptTag = document.getElementsByTagName('script')[0];
  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
},


render: function(runTimeSettings) {
  var t=this;
  Player.prototype.render.call(this, runTimeSettings);
  window.onYouTubeIframeAPIReady = function() {
    var player = new YT.Player('PlayerReal', {
      events: {
        'onStateChange': function(e) {
          t.dispatchEvent(e);
        },
        'onReady': function(e) {
          t.player = player;
          t.domReady.resolve();
        },
        'onError':function(e) {
          // nothing yet...
        }
      }
    });
  };

  this._injectScript();
  return this.el;
}
4

0 回答 0