diff options
Diffstat (limited to 'ext/fg/js/frontend-initialize.js')
| -rw-r--r-- | ext/fg/js/frontend-initialize.js | 17 | 
1 files changed, 13 insertions, 4 deletions
| diff --git a/ext/fg/js/frontend-initialize.js b/ext/fg/js/frontend-initialize.js index 2b942258..2df59e20 100644 --- a/ext/fg/js/frontend-initialize.js +++ b/ext/fg/js/frontend-initialize.js @@ -16,6 +16,7 @@   */  /* global + * DOM   * FrameOffsetForwarder   * Frontend   * PopupProxy @@ -24,7 +25,7 @@   * apiOptionsGet   */ -async function createIframePopupProxy(url, frameOffsetForwarder) { +async function createIframePopupProxy(url, frameOffsetForwarder, setDisabled) {      const rootPopupInformationPromise = yomichan.getTemporaryListenerResult(          chrome.runtime.onMessage,          ({action, params}, {resolve}) => { @@ -38,7 +39,7 @@ async function createIframePopupProxy(url, frameOffsetForwarder) {      const getFrameOffset = frameOffsetForwarder.getOffset.bind(frameOffsetForwarder); -    const popup = new PopupProxy(popupId, 0, null, frameId, url, getFrameOffset); +    const popup = new PopupProxy(popupId, 0, null, frameId, url, getFrameOffset, setDisabled);      await popup.prepare();      return popup; @@ -78,6 +79,13 @@ async function main() {      let frontendPreparePromise = null;      let frameOffsetForwarder = null; +    let iframePopupsInRootFrameAvailable = true; + +    const disableIframePopupsInRootFrame = () => { +        iframePopupsInRootFrameAvailable = false; +        applyOptions(); +    }; +      const applyOptions = async () => {          const optionsContext = {depth: isSearchPage ? 0 : depth, url};          const options = await apiOptionsGet(optionsContext); @@ -88,8 +96,8 @@ async function main() {          }          let popup; -        if (isIframe && options.general.showIframePopupsInRootFrame) { -            popup = popups.iframe || await createIframePopupProxy(url, frameOffsetForwarder); +        if (isIframe && options.general.showIframePopupsInRootFrame && DOM.getFullscreenElement() === null && iframePopupsInRootFrameAvailable) { +            popup = popups.iframe || await createIframePopupProxy(url, frameOffsetForwarder, disableIframePopupsInRootFrame);              popups.iframe = popup;          } else if (proxy) {              popup = popups.proxy || await createPopupProxy(depth, id, parentFrameId, url); @@ -117,6 +125,7 @@ async function main() {      };      yomichan.on('optionsUpdated', applyOptions); +    window.addEventListener('fullscreenchange', applyOptions, false);      await applyOptions();  } |