Skip to content

Commit

Permalink
fix: event.currentTarget always being equal to event.target (#11419)
Browse files Browse the repository at this point in the history
fixes #11328
  • Loading branch information
huntabyte committed May 2, 2024
1 parent edefc84 commit 17b2f62
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 9 deletions.
18 changes: 9 additions & 9 deletions packages/svelte/src/internal/client/dom/elements/events.js
Expand Up @@ -122,30 +122,30 @@ export function handle_event_propagation(handler_element, event) {
}
});

/** @param {Element} current_target */
function next(current_target) {
/** @param {Element} next_target */
function next(next_target) {
current_target = next_target;
/** @type {null | Element} */
var parent_element =
current_target.parentNode || /** @type {any} */ (current_target).host || null;
var parent_element = next_target.parentNode || /** @type {any} */ (next_target).host || null;

try {
// @ts-expect-error
var delegated = current_target['__' + event_name];
var delegated = next_target['__' + event_name];

if (delegated !== undefined && !(/** @type {any} */ (current_target).disabled)) {
if (delegated !== undefined && !(/** @type {any} */ (next_target).disabled)) {
if (is_array(delegated)) {
var [fn, ...data] = delegated;
fn.apply(current_target, [event, ...data]);
fn.apply(next_target, [event, ...data]);
} else {
delegated.call(current_target, event);
delegated.call(next_target, event);
}
}
} finally {
if (
!event.cancelBubble &&
parent_element !== handler_element &&
parent_element !== null &&
current_target !== handler_element
next_target !== handler_element
) {
next(parent_element);
}
Expand Down
@@ -0,0 +1,12 @@
import { test } from '../../test';

export default test({
async test({ assert, target, logs }) {
const [s1] = target.querySelectorAll('span');

s1?.click();
await Promise.resolve();

assert.deepEqual(logs, [false]);
}
});
@@ -0,0 +1,13 @@
<script>
function onclick(e) {
// should log false when we click the span
console.log(e.currentTarget === e.target)
}
</script>


<button {onclick}>
<span>
Click me
</span>
</button>

0 comments on commit 17b2f62

Please sign in to comment.