diff options
author | Sam Potts <sam@potts.es> | 2018-05-26 13:55:22 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-26 13:55:22 +1000 |
commit | f0be913dc384c5a229af70b69711ab246226c1a3 (patch) | |
tree | 1919f9f0ead11712f3a94eeed2e5b6da0130c8f9 /src/js/utils.js | |
parent | c41bb657ac490d032f2992845d21a457a7faedf1 (diff) | |
parent | cd51788b980a7bc7b5caaf2d595d2077be4138f5 (diff) | |
download | plyr-f0be913dc384c5a229af70b69711ab246226c1a3.tar.lz plyr-f0be913dc384c5a229af70b69711ab246226c1a3.tar.xz plyr-f0be913dc384c5a229af70b69711ab246226c1a3.zip |
Merge pull request #975 from sampotts/develop
v3.3.8
Diffstat (limited to 'src/js/utils.js')
-rw-r--r-- | src/js/utils.js | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/src/js/utils.js b/src/js/utils.js index a58d8555..0c5a28d7 100644 --- a/src/js/utils.js +++ b/src/js/utils.js @@ -120,6 +120,21 @@ const utils = { }); }, + // Load image avoiding xhr/fetch CORS issues + // Server status can't be obtained this way unfortunately, so this uses "naturalWidth" to determine if the image has loaded. + // By default it checks if it is at least 1px, but you can add a second argument to change this. + loadImage(src, minWidth = 1) { + return new Promise((resolve, reject) => { + const image = new Image(); + const handler = () => { + delete image.onload; + delete image.onerror; + (image.naturalWidth >= minWidth ? resolve : reject)(image); + }; + Object.assign(image, {onload: handler, onerror: handler, src}); + }); + }, + // Load an external script loadScript(url) { return new Promise((resolve, reject) => { @@ -393,14 +408,16 @@ const utils = { } }, - // Toggle class on an element - toggleClass(element, className, toggle) { + // Mirror Element.classList.toggle, with IE compatibility for "force" argument + toggleClass(element, className, force) { if (utils.is.element(element)) { - const contains = element.classList.contains(className); - - element.classList[toggle ? 'add' : 'remove'](className); + let method = 'toggle'; + if (typeof force !== 'undefined') { + method = force ? 'add' : 'remove'; + } - return (toggle && !contains) || (!toggle && contains); + element.classList[method](className); + return element.classList.contains(className); } return null; |