diff --git a/web/src/util/contentvisibility.ts b/web/src/util/contentvisibility.ts index f825b33..c02502a 100644 --- a/web/src/util/contentvisibility.ts +++ b/web/src/util/contentvisibility.ts @@ -15,7 +15,7 @@ // along with this program. If not, see . import { RefObject, useLayoutEffect, useRef, useState } from "react" -export default function useContentVisibilit( +export default function useContentVisibility( allowRevert = false, ): [boolean, RefObject] { const ref = useRef(null) @@ -25,13 +25,17 @@ export default function useContentVisibilit( if (!element) { return } - const listener = (evt: unknown) => { + const listener = ((evt: ContentVisibilityAutoStateChangeEvent) => { + if (evt.target !== evt.currentTarget) { + // Workaround for chrome bug https://issues.chromium.org/issues/365168180 + return + } if (!(evt as ContentVisibilityAutoStateChangeEvent).skipped) { setVisible(true) } else if (allowRevert) { setVisible(false) } - } + }) as (evt: unknown) => void element.addEventListener("contentvisibilityautostatechange", listener) return () => element.removeEventListener("contentvisibilityautostatechange", listener) }, [allowRevert])