From d1603238c49b30b896ddca6f5bdfaa95b1fbf8ba Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Tue, 8 Aug 2023 09:49:04 -0700 Subject: [PATCH] Fix events with a text node target --- packages/interpreter/src/interpreter.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/interpreter/src/interpreter.js b/packages/interpreter/src/interpreter.js index 0a041df27..b4da45d54 100644 --- a/packages/interpreter/src/interpreter.js +++ b/packages/interpreter/src/interpreter.js @@ -390,7 +390,11 @@ class Interpreter { function handler(event, name, bubbles, config) { let target = event.target; if (target != null) { - let preventDefaultRequests = target.getAttribute(`dioxus-prevent-default`); + let preventDefaultRequests = null; + // Some events can be triggered on text nodes, which don't have attributes + if (target instanceof Element) { + preventDefaultRequests = target.getAttribute(`dioxus-prevent-default`); + } if (event.type === "click") { // todo call prevent default if it's the right type of event @@ -474,7 +478,10 @@ function handler(event, name, bubbles, config) { } function find_real_id(target) { - let realId = target.getAttribute(`data-dioxus-id`); + let realId = null; + if (target instanceof Element) { + realId = target.getAttribute(`data-dioxus-id`); + } // walk the tree to find the real element while (realId == null) { // we've reached the root we don't want to send an event @@ -483,7 +490,9 @@ function find_real_id(target) { } target = target.parentElement; - realId = target.getAttribute(`data-dioxus-id`); + if (target instanceof Element) { + realId = target.getAttribute(`data-dioxus-id`); + } } return realId; }