Skip to content

Commit c30cf71

Browse files
committed
fix event handling
1 parent c2f97c7 commit c30cf71

File tree

4 files changed

+20
-5
lines changed

4 files changed

+20
-5
lines changed

packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteHTML.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,17 @@ import { visit_event_attribute } from './shared/events.js';
1212
* @param {ComponentContext} context
1313
*/
1414
export function SvelteHTML(element, context) {
15+
const event_context = {
16+
...context,
17+
state: { ...context.state, node: b.id('$.document.documentElement') }
18+
};
1519
/** @type {Property[]} */
1620
const attributes = [];
1721

1822
for (const attribute of element.attributes) {
1923
if (attribute.type === 'Attribute') {
2024
if (is_event_attribute(attribute)) {
21-
visit_event_attribute(attribute, context);
25+
visit_event_attribute(attribute, event_context);
2226
} else {
2327
const name = normalize_attribute(attribute.name);
2428
const { value } = build_attribute_value(attribute.value, context);

packages/svelte/src/internal/client/dom/elements/events.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,14 @@ export function event(event_name, dom, handler, capture, passive) {
117117
var options = { capture, passive };
118118
var target_handler = create_event(event_name, dom, handler, options);
119119

120-
// @ts-ignore
121-
if (dom === document.body || dom === window || dom === document) {
120+
if (
121+
// @ts-ignore
122+
dom === window ||
123+
// @ts-ignore
124+
dom === document ||
125+
dom === document.body ||
126+
dom === document.documentElement
127+
) {
122128
teardown(() => {
123129
dom.removeEventListener(event_name, target_handler, options);
124130
});
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import { test } from '../../test';
22

33
export default test({
4-
async test({ assert }) {
4+
async test({ assert, target, logs }) {
55
assert.deepEqual(document.documentElement.lang, 'de');
6+
7+
target.querySelector('button')?.click();
8+
assert.deepEqual(logs, ['clicked']);
69
}
710
});
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
<svelte:html lang="de"></svelte:html>
1+
<svelte:html lang="de" onclick={() => console.log('clicked')}></svelte:html>
2+
3+
<button>click</button>

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy