From 7442c8d3f4da5a7f7c571c1997265b3b804224c9 Mon Sep 17 00:00:00 2001 From: David Ortner Date: Thu, 30 May 2024 01:04:12 +0200 Subject: [PATCH] chore: [#1451] Continue on implementation --- .../src/browser/utilities/BrowserFrameFactory.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/happy-dom/src/browser/utilities/BrowserFrameFactory.ts b/packages/happy-dom/src/browser/utilities/BrowserFrameFactory.ts index 2fb4bd18..7400b8ee 100644 --- a/packages/happy-dom/src/browser/utilities/BrowserFrameFactory.ts +++ b/packages/happy-dom/src/browser/utilities/BrowserFrameFactory.ts @@ -42,6 +42,12 @@ export default class BrowserFrameFactory { } if (!frame.childFrames.length) { + if (frame.window && frame.window[PropertySymbol.mutationObservers]) { + for (const mutationObserver of frame.window[PropertySymbol.mutationObservers]) { + mutationObserver.disconnect(); + } + frame.window[PropertySymbol.mutationObservers] = []; + } return frame[PropertySymbol.asyncTaskManager] .destroy() .then(() => { @@ -60,6 +66,12 @@ export default class BrowserFrameFactory { Promise.all(frame.childFrames.slice().map((childFrame) => this.destroyFrame(childFrame))) .then(() => { + if (frame.window && frame.window[PropertySymbol.mutationObservers]) { + for (const mutationObserver of frame.window[PropertySymbol.mutationObservers]) { + mutationObserver.disconnect(); + } + frame.window[PropertySymbol.mutationObservers] = []; + } return frame[PropertySymbol.asyncTaskManager].destroy().then(() => { frame[PropertySymbol.exceptionObserver]?.disconnect(); if (frame.window) {