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 的文档就绪回调中。我看到的解决方法之一是使用jQuery deferred objects。首先我们创建一个延迟对象并在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 回答