aboutsummaryrefslogtreecommitdiffstats
path: root/src/js/plugins/youtube.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/plugins/youtube.js')
-rw-r--r--src/js/plugins/youtube.js39
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);
});
}
},