diff --git a/packages/router-core/src/scroll-restoration.ts b/packages/router-core/src/scroll-restoration.ts index 5e4ae0d3ee..5039895e50 100644 --- a/packages/router-core/src/scroll-restoration.ts +++ b/packages/router-core/src/scroll-restoration.ts @@ -219,7 +219,7 @@ export function setupScrollRestoration(router: AnyRouter, force?: boolean) { } trackedScrollTargets.clear() }) - addEventListener('pagehide', () => { + window.addEventListener('pagehide', () => { snapshotCurrentScrollTargets( getKey( router.stores.resolvedLocation.get() ?? router.stores.location.get(), diff --git a/packages/router-core/tests/scroll-restoration.test.ts b/packages/router-core/tests/scroll-restoration.test.ts index c02a8f8783..a720bfbaed 100644 --- a/packages/router-core/tests/scroll-restoration.test.ts +++ b/packages/router-core/tests/scroll-restoration.test.ts @@ -71,9 +71,11 @@ describe('setupScrollRestoration', () => { expect(router._scroll.restoring).toBe(true) expect(router._scroll.restoration).toBe(true) expect(window.history.scrollRestoration).toBe('manual') - expect( - windowAddEventListener.mock.calls.some(([event]) => event === 'pagehide'), - ).toBe(true) + const pagehideCallIndex = windowAddEventListener.mock.calls.findIndex( + ([event]) => event === 'pagehide', + ) + expect(pagehideCallIndex).toBeGreaterThanOrEqual(0) + expect(windowAddEventListener.mock.contexts[pagehideCallIndex]).toBe(window) expect( documentAddEventListener.mock.calls.some( ([event, _listener, options]) => event === 'scroll' && options === true,