aboutsummaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/fg/js/popup.js31
1 files changed, 30 insertions, 1 deletions
diff --git a/ext/fg/js/popup.js b/ext/fg/js/popup.js
index d2acf4d0..ad81cf03 100644
--- a/ext/fg/js/popup.js
+++ b/ext/fg/js/popup.js
@@ -33,7 +33,8 @@ class Popup {
if (!this.injected) {
this.injected = new Promise((resolve, reject) => {
this.container.addEventListener('load', resolve);
- document.body.appendChild(this.container);
+ this.observeFullscreen();
+ this.onFullscreenChanged();
});
}
@@ -138,4 +139,32 @@ class Popup {
invokeApi(action, params={}) {
this.container.contentWindow.postMessage({action, params}, '*');
}
+
+ observeFullscreen() {
+ const fullscreenEvents = [
+ 'fullscreenchange',
+ 'MSFullscreenChange',
+ 'mozfullscreenchange',
+ 'webkitfullscreenchange'
+ ];
+ for (const eventName of fullscreenEvents) {
+ document.addEventListener(eventName, () => this.onFullscreenChanged(), false);
+ }
+ }
+
+ getFullscreenElement() {
+ return (
+ document.fullscreenElement ||
+ document.msFullscreenElement ||
+ document.mozFullScreenElement ||
+ document.webkitFullscreenElement
+ );
+ }
+
+ onFullscreenChanged() {
+ const parent = (this.getFullscreenElement() || document.body || null);
+ if (parent !== null && this.container.parentNode !== parent) {
+ parent.appendChild(this.container);
+ }
+ }
}