Tôi đang hợp nhất việc sử dụng API iFrame của YouTube và jQuery được tải thông qua thẻ tập lệnh có bộ cờ defer
. Cờ trì hoãn phải được đặt là khách hàng có điểm số thông tin chi tiết về trang Google hoàn hảo và muốn duy trì điểm số đó.Sự kiện kích hoạt khi jQuery đang được tải
API YouTube, khi được tải đầy đủ và sẵn sàng để sử dụng, immediatley gọi hàm mà tôi xác định onYouTubeIframeAPIReady
. Sau đó nó sẽ gọi onPlayerReady
khi trình phát được tải và hiển thị đầy đủ.
Tôi muốn sử dụng jQuery trong hàm này, nhưng chỉ cần sử dụng jQuery bên trong hàm onPlayerReady sẽ tạo điều kiện cuộc đua (hy vọng thư viện jQuery đã tải xong khi thời gian onPlayerReady được gọi).
Nó xảy ra với tôi một giải pháp khả thi là sử dụng hàm onPlayerReady để đặt biến trước khi gọi một hàm kiểm tra cả trình phát và jQuery. Một hàm khác đặt một biến khi jQuery đang sẵn sàng và gọi hàm kiểm tra tương tự.
Tôi có một số mã hoạt động, nhưng phần kiểm tra jQuery có vẻ lộn xộn với tôi và cũng giới thiệu một lượng nhỏ sự chậm trễ không cần thiết thêm. Tôi đã tự hỏi nếu có ai biết một cách tốt hơn để chạy một cái gì đó ngay lập tức jQuery trở nên có sẵn. Về cơ bản, có callbacks cho jQuery trở nên có sẵn được xây dựng vào thư viện chính nó?
mã hiện tại của tôi là như sau:
var ready = {
'jquery': false,
'youtube' false
},
testJQueryLoaded;
testJQueryLoaded = function() {
if(typeof jQuery == 'undefined') {
window.setTimeout(function() {
testJQueryLoaded();
}, 25);
return;
}
ready.jquery = true;
postLibraryLoad();
};
testJQueryLoaded();
function onYouTubeIframeAPIReady() {
// Stuff
};
function onPlayerReady() {
ready.youtube = true;
postLibraryLoad();
};
function postLibraryLoad() {
if(!ready.jquery || !ready.youtube) {
return;
}
// More stuff
};
không, không có sự kiện như vậy. tuy nhiên bạn có thể nối thêm thẻ script thông qua javascript và lắng nghe các sự kiện của nó. –