diff --git a/src/shared/utils.ts b/src/shared/utils.ts index b3df805b..3caab831 100644 --- a/src/shared/utils.ts +++ b/src/shared/utils.ts @@ -269,5 +269,5 @@ export function isNumber(str: string): boolean { * Checks if the given element is part of the document tree. */ export function isInDocument(element: Element): boolean { - return element.ownerDocument === document; + return document.contains(element); } diff --git a/tests/utils.test.ts b/tests/utils.test.ts index 6845bd5b..468a9a43 100644 --- a/tests/utils.test.ts +++ b/tests/utils.test.ts @@ -2,6 +2,7 @@ import { jest } from "@jest/globals"; import { SETTINGS_DOMAIN_BLACKLIST, addDomainToList, + isInDocument, isDomainOnList, removeDomainFromList, } from "../src/shared/utils"; @@ -89,3 +90,16 @@ describe("shared utils domain list handling", () => { expect(getMock).toHaveBeenCalledWith(SETTINGS_DOMAIN_BLACKLIST); }); }); + +describe("shared utils DOM helpers", () => { + test("isInDocument returns false for detached nodes and true only while attached", () => { + const element = document.createElement("div"); + expect(isInDocument(element)).toBe(false); + + document.body.appendChild(element); + expect(isInDocument(element)).toBe(true); + + element.remove(); + expect(isInDocument(element)).toBe(false); + }); +});