aboutsummaryrefslogtreecommitdiffstats
path: root/src/js/utils.js
diff options
context:
space:
mode:
authorSam Potts <sam@potts.es>2018-05-26 13:55:22 +1000
committerGitHub <noreply@github.com>2018-05-26 13:55:22 +1000
commitf0be913dc384c5a229af70b69711ab246226c1a3 (patch)
tree1919f9f0ead11712f3a94eeed2e5b6da0130c8f9 /src/js/utils.js
parentc41bb657ac490d032f2992845d21a457a7faedf1 (diff)
parentcd51788b980a7bc7b5caaf2d595d2077be4138f5 (diff)
downloadplyr-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.js29
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;