diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteHTML.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteHTML.js
index f6e4f50c1a..3f239b930e 100644
--- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteHTML.js
+++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteHTML.js
@@ -12,13 +12,17 @@ import { visit_event_attribute } from './shared/events.js';
* @param {ComponentContext} context
*/
export function SvelteHTML(element, context) {
+ const event_context = {
+ ...context,
+ state: { ...context.state, node: b.id('$.document.documentElement') }
+ };
/** @type {Property[]} */
const attributes = [];
for (const attribute of element.attributes) {
if (attribute.type === 'Attribute') {
if (is_event_attribute(attribute)) {
- visit_event_attribute(attribute, context);
+ visit_event_attribute(attribute, event_context);
} else {
const name = normalize_attribute(attribute.name);
const { value } = build_attribute_value(attribute.value, context);
diff --git a/packages/svelte/src/internal/client/dom/elements/events.js b/packages/svelte/src/internal/client/dom/elements/events.js
index f2038f96ad..e6309d9902 100644
--- a/packages/svelte/src/internal/client/dom/elements/events.js
+++ b/packages/svelte/src/internal/client/dom/elements/events.js
@@ -117,8 +117,14 @@ export function event(event_name, dom, handler, capture, passive) {
var options = { capture, passive };
var target_handler = create_event(event_name, dom, handler, options);
- // @ts-ignore
- if (dom === document.body || dom === window || dom === document) {
+ if (
+ // @ts-ignore
+ dom === window ||
+ // @ts-ignore
+ dom === document ||
+ dom === document.body ||
+ dom === document.documentElement
+ ) {
teardown(() => {
dom.removeEventListener(event_name, target_handler, options);
});
diff --git a/packages/svelte/tests/runtime-runes/samples/svelte-html/_config.js b/packages/svelte/tests/runtime-runes/samples/svelte-html/_config.js
index cea9bba2aa..f843bf7df3 100644
--- a/packages/svelte/tests/runtime-runes/samples/svelte-html/_config.js
+++ b/packages/svelte/tests/runtime-runes/samples/svelte-html/_config.js
@@ -1,7 +1,10 @@
import { test } from '../../test';
export default test({
- async test({ assert }) {
+ async test({ assert, target, logs }) {
assert.deepEqual(document.documentElement.lang, 'de');
+
+ target.querySelector('button')?.click();
+ assert.deepEqual(logs, ['clicked']);
}
});
diff --git a/packages/svelte/tests/runtime-runes/samples/svelte-html/main.svelte b/packages/svelte/tests/runtime-runes/samples/svelte-html/main.svelte
index cd4ed850b4..c91f05045d 100644
--- a/packages/svelte/tests/runtime-runes/samples/svelte-html/main.svelte
+++ b/packages/svelte/tests/runtime-runes/samples/svelte-html/main.svelte
@@ -1 +1,3 @@
-
+ console.log('clicked')}>
+
+