diff options
Diffstat (limited to 'src/js/plugins/youtube.js')
-rw-r--r-- | src/js/plugins/youtube.js | 39 |
1 files changed, 14 insertions, 25 deletions
diff --git a/src/js/plugins/youtube.js b/src/js/plugins/youtube.js index bf933646..34c5de7e 100644 --- a/src/js/plugins/youtube.js +++ b/src/js/plugins/youtube.js @@ -47,8 +47,6 @@ function getHost(config) { return undefined; } -let onYouTubeReadyCallbacks; - const youtube = { setup() { // Add embed class for responsive @@ -58,31 +56,22 @@ const youtube = { if (is.object(window.YT) && is.function(window.YT.Player)) { youtube.ready.call(this); } else { + // Reference current global callback + const callback = window.onYouTubeIframeAPIReady; + + // Set callback to process queue + window.onYouTubeIframeAPIReady = () => { + // Call global callback if set + if (is.function(callback)) { + callback(); + } - if (!onYouTubeReadyCallbacks) { - const oldYouTubeIframeAPIReady = window.onYouTubeIframeAPIReady; - // Load the API - onYouTubeReadyCallbacks = []; - - // Set callback to process queue - window.onYouTubeIframeAPIReady = () => { - if (oldYouTubeIframeAPIReady && is.function(oldYouTubeIframeAPIReady)) { - oldYouTubeIframeAPIReady(); - } - - window.onYouTubeReadyCallbacks.forEach(callback => { - callback(); - }); - }; - - loadScript(this.config.urls.youtube.sdk).catch(error => { - this.debug.warn('YouTube API failed to load', error); - }); - } - - // Add to queue - onYouTubeReadyCallbacks.push(() => { youtube.ready.call(this); + }; + + // Load the SDK + loadScript(this.config.urls.youtube.sdk).catch(error => { + this.debug.warn('YouTube API failed to load', error); }); } }, |