From 565e3a8c6ad31afa0ddb171ac5a33b6b84e5c3dc Mon Sep 17 00:00:00 2001 From: siikamiika Date: Fri, 10 Apr 2020 15:49:56 +0300 Subject: [PATCH] change iframe popup live --- ext/fg/js/frontend-initialize.js | 13 +++++++++---- ext/fg/js/frontend.js | 11 +++++++++-- ext/mixed/js/text-scanner.js | 2 +- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/ext/fg/js/frontend-initialize.js b/ext/fg/js/frontend-initialize.js index 2cfb6176..ce1a6bf6 100644 --- a/ext/fg/js/frontend-initialize.js +++ b/ext/fg/js/frontend-initialize.js @@ -86,10 +86,6 @@ async function main() { const applyOptions = async () => { const optionsContext = {depth: isSearchPage ? 0 : depth, url}; const options = await apiOptionsGet(optionsContext); - if (isSearchPage) { - const disabled = !options.scanning.enableOnSearchPage; - initEventDispatcher.trigger('setDisabledOverride', {disabled}); - } let popup; if (isIframe && options.general.showIframePopupsInRootFrame) { @@ -103,6 +99,15 @@ async function main() { popups.normal = popup; } + if (isSearchPage) { + const disabled = !options.scanning.enableOnSearchPage; + initEventDispatcher.trigger('setDisabledOverride', {disabled}); + } + + if (isIframe) { + initEventDispatcher.trigger('popupChange', {popup}); + } + if (frontend === null) { frontend = new Frontend(popup, initEventDispatcher); await frontend.prepare(); diff --git a/ext/fg/js/frontend.js b/ext/fg/js/frontend.js index a6df4b4c..f969df32 100644 --- a/ext/fg/js/frontend.js +++ b/ext/fg/js/frontend.js @@ -29,7 +29,7 @@ class Frontend extends TextScanner { constructor(popup, initEventDispatcher) { super( window, - popup.isProxy() ? [] : [popup.getContainer()], + () => this.popup.isProxy() ? [] : [this.popup.getContainer()], [(x, y) => this.popup.containsPoint(x, y)], () => this.popup.depth <= this.options.scanning.popupNestingMaxDepth && !this._disabledOverride ); @@ -78,6 +78,7 @@ class Frontend extends TextScanner { } this.initEventDispatcher.on('setDisabledOverride', this.onSetDisabledOverride.bind(this)); + this.initEventDispatcher.on('popupChange', this.onPopupChange.bind(this)); yomichan.on('orphaned', this.onOrphaned.bind(this)); yomichan.on('optionsUpdated', this.updateOptions.bind(this)); @@ -242,6 +243,12 @@ class Frontend extends TextScanner { } } + async onPopupChange({popup}) { + this.onSearchClear(true); + this.popup = popup; + await popup.setOptions(this.options); + } + getOptionsContext() { this.optionsContext.url = this.popup.url; return this.optionsContext; @@ -274,7 +281,7 @@ class Frontend extends TextScanner { } _broadcastRootPopupInformation() { - if (!this.popup.isProxy() && this.popup.depth === 0) { + if (!this.popup.isProxy() && this.popup.depth === 0 && this.popup.frameId === 0) { apiBroadcastTab('rootPopupInformation', {popupId: this.popup.id, frameId: this.popup.frameId}); } } diff --git a/ext/mixed/js/text-scanner.js b/ext/mixed/js/text-scanner.js index 1d6e36e0..85be7119 100644 --- a/ext/mixed/js/text-scanner.js +++ b/ext/mixed/js/text-scanner.js @@ -48,7 +48,7 @@ class TextScanner { } onMouseOver(e) { - if (this.ignoreElements.includes(e.target)) { + if (this.ignoreElements().includes(e.target)) { this.scanTimerClear(); } }