aboutsummaryrefslogtreecommitdiffstats
path: root/src/js/fullscreen.js
diff options
context:
space:
mode:
authorSam Potts <sam@potts.es>2018-03-22 00:26:01 +1100
committerSam Potts <sam@potts.es>2018-03-22 00:26:01 +1100
commitf998b996faf2763b31cd093a42835bae142e9671 (patch)
treed19b3a2f4857a11ad61d26b66f00424dfec84b07 /src/js/fullscreen.js
parent958b47c435a9cd5ad20dc167b855148a3a9c2b6f (diff)
downloadplyr-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.js20
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}`]();
}
}