diff --git a/packages/svelte/src/internal/client/render.js b/packages/svelte/src/internal/client/render.js index 97cb748bae..2181c6bf81 100644 --- a/packages/svelte/src/internal/client/render.js +++ b/packages/svelte/src/internal/client/render.js @@ -1402,12 +1402,13 @@ function handle_event_propagation(handler_element, event) { const handled_at = event.__root; if (handled_at) { const at_idx = path.indexOf(handled_at); - if (at_idx !== -1 && handler_element === document) { - // This is the fallback document listener but the event was already handled - // -> ignore, but set handle_at to document so that we're resetting the event + // @ts-ignore + if (at_idx !== -1 && (handler_element === document || handler_element === window)) { + // This is the fallback document/window listener but the event was already handled + // -> ignore, but set handle_at to document/window so that we're resetting the event // chain in case someone manually dispatches the same event object again. // @ts-expect-error - event.__root = document; + event.__root = handler_element; return; } // We're deliberately not skipping if the index is higher, because