summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsiikamiika <siikamiika@users.noreply.github.com>2020-04-10 15:49:56 +0300
committersiikamiika <siikamiika@users.noreply.github.com>2020-04-11 21:04:30 +0300
commit565e3a8c6ad31afa0ddb171ac5a33b6b84e5c3dc (patch)
tree965d5d3b29cb45df2d9c3dbabf0de9811372e682
parentb9035854b2b45979c16f8733bb66993f6ce044fe (diff)
change iframe popup live
-rw-r--r--ext/fg/js/frontend-initialize.js13
-rw-r--r--ext/fg/js/frontend.js11
-rw-r--r--ext/mixed/js/text-scanner.js2
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();
}
}