diff options
| -rw-r--r-- | ext/fg/js/frontend-initialize.js | 13 | ||||
| -rw-r--r-- | ext/fg/js/frontend.js | 11 | ||||
| -rw-r--r-- | 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();          }      } |