6

私がやりたいことは次のとおりです。

  1. ドキュメントがレンダリングされるのを待ちます。
  2. YouTube iframe API の準備ができたら、カスタム関数を初期化してYTオブジェクトを渡し、内部からプレーヤーを構築できるようにします。

これは私がこれまで行ってきたことです。それは機能しますが、何かが非常に間違っていると感じています。このようにすべきかどうかはわかりません。

jQuery.getScript("http://www.youtube.com/iframe_api"); // load YT api

jQuery(document).ready(function() {
  onYouTubeIframeAPIReady = function() {
    new my_custom_function().init(YT); // init my function and pass YT object
  };
});

誰かがこれを行うための最良の方法を明確にしていただければ幸いです。プレーヤーを内部から構築する必要がありmy_custom_function()ます。

4

1 に答える 1

9

関数はグローバル スコープ内にある必要があるためonYouTubeIframeAPIReady、jQuery のドキュメント対応コールバックにバインドできないと思います。私が目にする回避策の 1 つは、 jQuery deferred objectsを使用することです。最初にdefferedオブジェクトを作成し、onYouTubeIframeAPIReadyコールバックで解決します

 var YTdeferred = $.Deferred();
 window.onYouTubeIframeAPIReady = function() {
   YTdeferred.resolve(window.YT);
 };

ドキュメントの準備ができた後、遅延オブジェクトが解決されるのを待ちます

$(document).ready(function() {
  YTdeferred.done(function(YT) {
    // use YT here
  });
});

JSFiddle で完全な例を参照してください

于 2014-06-29T11:24:09.417 に答える