aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/js/plugins/vimeo.js2
-rw-r--r--src/js/utils.js19
2 files changed, 16 insertions, 5 deletions
diff --git a/src/js/plugins/vimeo.js b/src/js/plugins/vimeo.js
index 8ae57dd9..4bca80e3 100644
--- a/src/js/plugins/vimeo.js
+++ b/src/js/plugins/vimeo.js
@@ -25,6 +25,7 @@ const vimeo = {
// Load the API if not already
if (!utils.is.object(window.Vimeo)) {
utils.loadScript(this.config.urls.vimeo.api);
+
// Wait for load
const vimeoTimer = window.setInterval(() => {
if (utils.is.object(window.Vimeo)) {
@@ -38,6 +39,7 @@ const vimeo = {
},
// Set aspect ratio
+ // For Vimeo we have an extra 300% height <div> to hide the standard controls and UI
setAspectRatio(input) {
const ratio = utils.is.string(input) ? input.split(':') : this.config.ratio.split(':');
const padding = 100 / ratio[0] * ratio[1];
diff --git a/src/js/utils.js b/src/js/utils.js
index 1c78766f..84947e58 100644
--- a/src/js/utils.js
+++ b/src/js/utils.js
@@ -76,17 +76,26 @@ const utils = {
},
// Load an external script
- loadScript(url) {
+ loadScript(url, callback) {
// Check script is not already referenced
if (document.querySelectorAll(`script[src="${url}"]`).length) {
return;
}
- const tag = document.createElement('script');
- tag.src = url;
+ // Build the element
+ const element = document.createElement('script');
+ element.src = url;
- const firstScriptTag = document.getElementsByTagName('script')[0];
- firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
+ // Find first script
+ const first = document.getElementsByTagName('script')[0];
+
+ // Bind callback
+ if (utils.is.function(callback)) {
+ element.addEventListener('load', event => callback.call(null, event), false);
+ }
+
+ // Inject
+ first.parentNode.insertBefore(element, first);
},
// Load an external SVG sprite