diff options
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/fg/js/float.js | 2 | ||||
| -rw-r--r-- | ext/fg/js/popup.js | 20 | 
2 files changed, 21 insertions, 1 deletions
| diff --git a/ext/fg/js/float.js b/ext/fg/js/float.js index 3766d5a4..8871160f 100644 --- a/ext/fg/js/float.js +++ b/ext/fg/js/float.js @@ -45,6 +45,8 @@ class DisplayFloat extends Display {          }          this.setContentScale(scale); + +        window.parent.postMessage('initialized', '*');      }      onError(error) { diff --git a/ext/fg/js/popup.js b/ext/fg/js/popup.js index e7dae93e..6cfe49e5 100644 --- a/ext/fg/js/popup.js +++ b/ext/fg/js/popup.js @@ -45,6 +45,8 @@ class Popup {          this._container.style.height = '0px';          this._updateVisibility(); + +        window.addEventListener('message', (e) => this.onMessage(e), false);      }      // Public properties @@ -129,6 +131,18 @@ class Popup {          }      } +    onMessage(e) { +        const action = e.data; +        const handler = Popup._windowMessageHandlers.get(action); +        if (typeof handler !== 'function') { return; } + +        handler(this); +    } + +    setInitialized() { +        throw new Error('Override me'); +    } +      // Popup-only public functions      setParent(parent) { @@ -237,7 +251,7 @@ class Popup {                      childrenSupported: this._childrenSupported,                      scale: this._contentScale                  }); -                resolve(); +                this.setInitialized = resolve;              });              this._observeFullscreen();              this._onFullscreenChanged(); @@ -535,4 +549,8 @@ class Popup {      }  } +Popup._windowMessageHandlers = new Map([ +    ['initialized', (self) => self.setInitialized()] +]); +  Popup.outerStylesheet = null; |