From 249dffaa2d8b966608ed4eaba615c3d449ae3f17 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sat, 2 Nov 2024 00:37:33 +0200 Subject: [PATCH] web/contentvisibility: work around another chrome bug --- web/src/util/contentvisibility.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) 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])