diff options
| -rw-r--r-- | ext/fg/js/popup.js | 39 | 
1 files changed, 28 insertions, 11 deletions
| diff --git a/ext/fg/js/popup.js b/ext/fg/js/popup.js index e48703bf..3c3d0510 100644 --- a/ext/fg/js/popup.js +++ b/ext/fg/js/popup.js @@ -20,26 +20,43 @@  class Popup {      constructor() {          this.offset = 10; - -        this.popup = document.createElement('iframe'); -        this.popup.id = 'yomichan-popup'; -        this.popup.addEventListener('mousedown', (e) => e.stopPropagation()); -        this.popup.addEventListener('scroll', (e) => e.stopPropagation()); - -        document.body.appendChild(this.popup);      } -    show(cont, pos) { +    show(content, pos) { +        inject(); +          this.popup.style.left = pos.x + 'px';          this.popup.style.top  = pos.y + 'px';          this.popup.style.visibility = 'visible';      }      hide() { -        this.popup.style.visibility = 'hidden'; +        remove(); +    } + +    update(content) { +        if (this.popup !== null) { +            this.popup.setAttribute('srcdoc', content); +        } +    } + +    inject() { +        if (this.popup !== null) { +            return; +        } + +        this.popup = document.createElement('iframe'); +        this.popup.id = 'yomichan-popup'; +        this.popup.addEventListener('mousedown', (e) => e.stopPropagation()); +        this.popup.addEventListener('scroll', (e) => e.stopPropagation()); + +        document.body.appendChild(this.popup);      } -    update(cont) { -        this.popup.setAttribute('srcdoc', cont); +    remove() { +        if (this.popup !== null) { +            this.popup.parentNode.removeChild(this.popup); +            this.popup = null; +        }      }  } |