Allow popup window to be visible in fullscreen mode

Fixes #163
This commit is contained in:
toasted-nutbread 2019-06-22 23:01:49 -04:00
parent f77ac32fe1
commit 2974b592ab

View File

@ -33,7 +33,8 @@ class Popup {
if (!this.injected) { if (!this.injected) {
this.injected = new Promise((resolve, reject) => { this.injected = new Promise((resolve, reject) => {
this.container.addEventListener('load', resolve); this.container.addEventListener('load', resolve);
document.body.appendChild(this.container); this.observeFullscreen();
this.onFullscreenChanged();
}); });
} }
@ -138,4 +139,32 @@ class Popup {
invokeApi(action, params={}) { invokeApi(action, params={}) {
this.container.contentWindow.postMessage({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);
}
}
} }