我想做的是:
>等待文档呈现;
>当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()中构建玩家.
解决方法
因为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 }); });