2013-07-19 25 views
6

Ne yapmak istiyorum:onYouTubeIframeAPIReady jQuery .ready (belge) içindeki

  1. belge işlemek için bekleyin;
  2. YouTube iframe api hazır olduğunda, özel işlevimi başlatın ve YT nesnesini iletin, böylece oynatıcıyı içeriden oluşturabilirim.

Şimdiye kadar yaptığım şey budur. İşe yarıyor ama bir şeylerin çok yanlış olduğunu hissediyorum. Bu şekilde yapılması gerektiğinden emin değilim.

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

Bunu yapmanın en iyi yolunun ne olduğunu açıklığa kavuşturabilirseniz memnun olurum. Oyuncuları my_custom_function()'un içinden oluşturmaya gerçekten ihtiyacım var. fonksiyon küresel kapsamda olmak zorunda

cevap

6

onYouTubeIframeAPIReady olarak, biz jQuery'nin belge hazır geri aramasında bağlamak olamaz herhalde. Gördüğüm geçici çözümlerden biri jQuery deferred objects kullanmaktır. İlk başta bir deffered nesne oluşturmak ve hazır belgeye sonra çözülecek ertelenen nesne için bekleyen onYouTubeIframeAPIReady callback'inde sonra

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

ve bunu çözmek

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

See the full example on JSFiddle

İlgili konular