2013-07-19 32 views
6

Những gì tôi muốn làm là:onYouTubeIframeAPIReady bên trong jQuery (document) .ready

  1. Chờ cho tài liệu để hiển thị;
  2. Khi api iframe của YouTube sẵn sàng, hãy khởi tạo chức năng tùy chỉnh của tôi và chuyển đối tượng YT đến nó để tôi có thể tạo trình phát từ bên trong.

Đây là những gì tôi đã làm cho đến nay. Nó hoạt động nhưng tôi cảm thấy có điều gì đó rất sai. Tôi không chắc nó nên được thực hiện theo cách này.

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

Tôi rất cảm kích nếu ai đó có thể làm rõ cách tốt nhất để làm điều này. Tôi thực sự cần phải xây dựng các cầu thủ từ bên trong my_custom_function().

Trả lời

6

Vì chức năng onYouTubeIframeAPIReady phải nằm trong phạm vi toàn cầu, tôi cho rằng chúng tôi không thể ràng buộc nó trong tài liệu của jQuery sẵn sàng gọi lại. Một trong những cách giải quyết mà tôi thấy là sử dụng jQuery deferred objects. Lúc đầu chúng ta tạo ra một đối tượng deffered và giải quyết nó trong onYouTubeIframeAPIReady callback

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

và sau đó chờ đợi cho đối tượng chậm được giải quyết sau khi tài liệu sẵn sàng

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

See the full example on JSFiddle

Các vấn đề liên quan