我正在 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;
}