diff options
author | Sam Potts <sam@potts.es> | 2018-03-22 00:26:01 +1100 |
---|---|---|
committer | Sam Potts <sam@potts.es> | 2018-03-22 00:26:01 +1100 |
commit | f998b996faf2763b31cd093a42835bae142e9671 (patch) | |
tree | d19b3a2f4857a11ad61d26b66f00424dfec84b07 /src/js/fullscreen.js | |
parent | 958b47c435a9cd5ad20dc167b855148a3a9c2b6f (diff) | |
download | plyr-f998b996faf2763b31cd093a42835bae142e9671.tar.lz plyr-f998b996faf2763b31cd093a42835bae142e9671.tar.xz plyr-f998b996faf2763b31cd093a42835bae142e9671.zip |
Fix for Firefox fullscreen oddness (Fixes #821)
Diffstat (limited to 'src/js/fullscreen.js')
-rw-r--r-- | src/js/fullscreen.js | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/js/fullscreen.js b/src/js/fullscreen.js index 6d90bd6e..ffed442f 100644 --- a/src/js/fullscreen.js +++ b/src/js/fullscreen.js @@ -1,5 +1,6 @@ // ========================================================================== // Fullscreen wrapper +// https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#prefixing // ========================================================================== import utils from './utils'; @@ -54,6 +55,7 @@ class Fullscreen { // Get prefix this.prefix = Fullscreen.prefix; + this.name = Fullscreen.name; // Scroll position this.scrollPosition = { x: 0, y: 0 }; @@ -85,7 +87,7 @@ class Fullscreen { // Get the prefix for handlers static get prefix() { // No prefix - if (utils.is.function(document.cancelFullScreen)) { + if (utils.is.function(document.exitFullscreen)) { return false; } @@ -98,12 +100,9 @@ class Fullscreen { ]; prefixes.some(pre => { - if (utils.is.function(document[`${pre}CancelFullScreen`])) { + if (utils.is.function(document[`${pre}ExitFullscreen`]) || utils.is.function(document[`${pre}CancelFullScreen`])) { value = pre; return true; - } else if (utils.is.function(document.msExitFullscreen)) { - value = 'ms'; - return true; } return false; @@ -112,6 +111,10 @@ class Fullscreen { return value; } + static get name() { + return this.prefix === 'moz' ? 'FullScreen' : 'Fullscreen'; + } + // Determine if fullscreen is enabled get enabled() { const fallback = this.player.config.fullscreen.fallback && !utils.inFrame(); @@ -130,7 +133,7 @@ class Fullscreen { return utils.hasClass(this.target, this.player.config.classNames.fullscreen.fallback); } - const element = !this.prefix ? document.fullscreenElement : document[`${this.prefix}FullscreenElement`]; + const element = !this.prefix ? document.fullscreenElement : document[`${this.prefix}${this.name}Element`]; return element === this.target; } @@ -168,7 +171,7 @@ class Fullscreen { } else if (!this.prefix) { this.target.requestFullScreen(); } else if (!utils.is.empty(this.prefix)) { - this.target[`${this.prefix}${this.prefix === 'ms' ? 'RequestFullscreen' : 'RequestFullScreen'}`](); + this.target[`${this.prefix}Request${this.name}`](); } } @@ -187,7 +190,8 @@ class Fullscreen { } else if (!this.prefix) { document.cancelFullScreen(); } else if (!utils.is.empty(this.prefix)) { - document[`${this.prefix}${this.prefix === 'ms' ? 'ExitFullscreen' : 'CancelFullScreen'}`](); + const action = this.prefix === 'moz' ? 'Cancel' : 'Exit'; + document[`${this.prefix}${action}${this.name}`](); } } |