diff options
Diffstat (limited to 'ext')
-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; + } } } |