From 8ba04bf243a5dca8f735d1fbe1540dec5b87b63d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 15 Dec 2025 09:52:23 +0000 Subject: [PATCH] fix: also clean up beforeunload event listener Co-authored-by: gaomeng1900 <10131203+gaomeng1900@users.noreply.github.com> --- packages/page-agent/src/PageAgent.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/page-agent/src/PageAgent.ts b/packages/page-agent/src/PageAgent.ts index 4754c39..acdfcd6 100644 --- a/packages/page-agent/src/PageAgent.ts +++ b/packages/page-agent/src/PageAgent.ts @@ -80,6 +80,7 @@ export class PageAgent extends EventTarget { #abortController = new AbortController() #llmRetryListener: ((e: Event) => void) | null = null #llmErrorListener: ((e: Event) => void) | null = null + #beforeUnloadListener: ((e: Event) => void) | null = null /** PageController for DOM operations */ pageController: PageController @@ -135,9 +136,10 @@ export class PageAgent extends EventTarget { this.tools.delete('execute_javascript') } - window.addEventListener('beforeunload', (e) => { + this.#beforeUnloadListener = (e) => { if (!this.disposed) this.dispose('PAGE_UNLOADING') - }) + } + window.addEventListener('beforeunload', this.#beforeUnloadListener) } /** @@ -505,6 +507,12 @@ export class PageAgent extends EventTarget { this.#llmErrorListener = null } + // Clean up window event listeners + if (this.#beforeUnloadListener) { + window.removeEventListener('beforeunload', this.#beforeUnloadListener) + this.#beforeUnloadListener = null + } + this.config.onDispose?.call(this, reason) } }