瀏覽代碼

Merge pull request #1322 from ealmloff/fix-text-node-target-events

Fix events with a text node target
Jonathan Kelley 1 年之前
父節點
當前提交
73169e377e
共有 1 個文件被更改,包括 12 次插入3 次删除
  1. 12 3
      packages/interpreter/src/interpreter.js

+ 12 - 3
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
@@ -483,7 +487,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
@@ -492,7 +499,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;
 }