onYouTubeIframeAPIReady在jQuery(document).ready中

时间:2013-07-19 18:56:25

标签: javascript api iframe youtube

我想做的是:

  1. 等待文档呈现;
  2. 当YouTube iframe api准备好后,初始化我的自定义函数并将YT对象传递给它,以便我可以从内部构建播放器。
  3. 这是我到目前为止所做的。它有效,但我感觉有些不对劲。我不确定应该这样做。

    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()内构建玩家。

1 个答案:

答案 0 :(得分:8)

由于onYouTubeIframeAPIReady函数必须在全局范围内,我想我们不能在jQuery的文档就绪回调中绑定它。我看到的一个解决方法是使用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
  });
});

See the full example on JSFiddle