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;
}