fix: also clean up beforeunload event listener

Co-authored-by: gaomeng1900 <10131203+gaomeng1900@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-12-15 09:52:23 +00:00
parent 67bf38c8d5
commit 8ba04bf243

View File

@@ -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)
}
}