2013-07-19 19 views
6

Quello che voglio fare è:onYouTubeIframeAPIReady all'interno jQuery (document) .ready

  1. Attendere che il documento di rendere;
  2. Quando YouTube iframe api è pronto, inizializzare la mia funzione personalizzata e passare l'oggetto YT così posso costruire il giocatore dall'interno.

Questo è quello che ho fatto finora. Funziona, ma ho la sensazione che qualcosa sia molto sbagliato. Non sono sicuro che dovrebbe essere fatto in questo modo.

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 
    }; 
}); 

Apprezzerei se qualcuno può chiarire qual è il modo migliore per farlo. Ho davvero bisogno di costruire i giocatori dall'interno di my_custom_function().

risposta

6

Come onYouTubeIframeAPIReady funzione deve essere in un ambito globale, suppongo che non possiamo legare in documento pronto callback di jQuery. Uno dei workaround che vedo è quello di utilizzare jQuery deferred objects. In un primo momento si crea un oggetto deffered e risolvere in onYouTubeIframeAPIReady callback

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

e poi in attesa per oggetto differita da risolvere dopo documento pronto

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

See the full example on JSFiddle

Problemi correlati