onYouTubeIframeAPIReady在jQuery(document).ready中

Zhi*_*vko 6 javascript youtube api iframe

我想做的是:

  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
  };
});
Run Code Online (Sandbox Code Playgroud)

如果有人能澄清什么是最好的方法,我会很感激.我确实需要从内部建立球员my_custom_function().

Mic*_*nov 8

由于onYouTubeIframeAPIReady函数必须在全局范围内,我想我们不能在jQuery的文档就绪回调中绑定它.我看到的一个解决方法是使用jQuery延迟对象.首先,我们创建一个deffered对象并在onYouTubeIframeAPIReady回调中解决它

 var YTdeferred = $.Deferred();
 window.onYouTubeIframeAPIReady = function() {
   YTdeferred.resolve(window.YT);
 };
Run Code Online (Sandbox Code Playgroud)

然后等待文档准备好后解析延迟对象

$(document).ready(function() {
  YTdeferred.done(function(YT) {
    // use YT here
  });
});
Run Code Online (Sandbox Code Playgroud)

请参阅JSFiddle上的完整示例