问题标签 [event-capturing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 使用 React Hooks 时如何防止事件在嵌套的 div 中起作用
我有嵌套的 div 元素。外面应该有要移动和点击的事件。我想让嵌套元素充当按钮并防止来自外部的事件起作用。在示例中,当我们单击红色部分时,两个事件都在发生。当我们单击红色部分时,如何从绿色部分停止事件?stopPropagation() 没有完成这项工作。我正在使用 React,我的结构比示例中的更复杂。但为了清楚起见,我想减少。
如果有人可以提供帮助,我会很高兴。
我认为这与 React Hooks 有关。在这里,您可以看到 stopPropagation 不起作用的示例:
如果有人知道如何解决这个问题,我会很高兴。
javascript - 在目标处冒泡和捕获事件顺序
目标阶段的冒泡和捕获事件顺序是否在任何地方定义?
几乎任何你看的地方,你都会发现首先是捕获阶段,然后是冒泡阶段。一些消息来源还提到目标阶段是一个单独的阶段。
但是,提及目标阶段的消息来源并未指定此阶段的事件顺序。我假设注册为 Capturing 的事件将先于注册为 Bubbling 的事件。事实证明并非总是如此!
事实上——根据我的小实验结果——Target 阶段的事件处理程序执行完全取决于它们的注册顺序。
在上面的示例中,我们可以看到,在目标阶段期间,为冒泡阶段添加的事件在捕获阶段之前执行。这是因为我先注册了冒泡阶段的事件。如果我先为捕获阶段注册事件,然后再为冒泡阶段注册事件,则顺序将是“正确的”。
我的问题再次:目标阶段期间的事件顺序是否在任何地方定义?
javascript - 为什么捕获选项在 addEventListener 中不起作用
我的capture
选项似乎在 中不起作用,无论addEventListener
我将其设置true
为false
我检查了以下内容:
- 添加
once: true
到选项对象 - 这有效,但捕获不 - 替换
capture
为useCapture
- 这似乎也不起作用,并且在这两种情况下都没有错误/警告消息 - 我在网上读到一些(较旧的,例如小于 55 的 chrome 版本)浏览器不支持较新的选项,例如
once
- 我正在使用 chrome v88 并尝试用 Safari 打开文件,以防万一它是与浏览器相关的问题
你知道我做错了什么吗?
javascript - 如何在下一个表格单元格中使用 Tab 键设置焦点输入
以下是我在 HTML 中使用 JQuery 实现的场景
- 当用户双击表格单元格时,它应该在双击单元格内添加一个新输入 [完成]
- 当用户 KeyPress [Tab] 并且它应该移动到下一个单元格 [Done]
在 2 场景的情况下,我需要dblclick()
在下一个单元格上触发事件,该单元格在其中创建输入元素,但它无法在输入元素内聚焦。
我试图调试那种无法理解为什么会发生的场景。
我创建了一个按钮并编写了触发功能dblclick()
,然后在输入元素内设置了焦点。
我无法理解用户何时使用鼠标单击/click()
然后为什么将焦点设置在创建的输入元素上但为什么当我从代码中触发双击时没有发生同样的情况dblclick()
以下是相同的代码:
javascript - 如何通过在父母上添加点击事件来阅读孩子?
我正在动态打印表格,并在整个父级上添加了一个单击事件。但是点击事件是在没有任何点击的情况下调用的。当我按表格打印时,当我按下子按钮时,事件监听器没有响应?
javascript - 事件捕获是否通过触发节点的兄弟姐妹?
假设我们有:
我有一个事件监听器child-2
。
据我了解,事件捕获将沿着节点树向下移动,直到到达事件触发的节点。
事件捕获是否也通过兄弟孩子,检查他们是否是触发事件的目标?
javascript - 在 React 中将单击事件从父级传播到子级
我有一个像上面这样的反应成分组成。自定义点击处理程序附加到“父”和“子”组件。“ThirdPartyChildTarget”在其包中有自己的单击事件处理程序,我无法以任何方式修改其事件处理程序。当我单击“子”和“父”组件的“ThirdPartyChildTarget”事件处理程序时,会触发“ThirdPartyChildTarget”的事件处理程序。我想要 - 当我点击“ThirdPartyChildTarget”时,只有它的事件处理程序应该被触发。当我在“Child”组件中使用“stopPropagation”时,不会触发“Parent”的处理程序,但也不会触发“ThirdPartyChildTarget”。而且我无法在“ThirdPartyChildTarget”中添加/修改任何内容。
javascript - 如何在角度捕获模式下触发点击功能
我有嵌套组件
在 child.component
当我点击组件时我想要;执行第一个父函数,然后执行子函数。我知道在纯js中我们可以在捕获阶段实现它,但我不知道如何在角度实现它。
javascript - 点击事件发生时如何捕获最外部的元素
单击 div 时我需要获取最多的元素......比如这个......
我认为这与某种冒泡或捕获效果有关。但是我无法处理...我已经尝试过event.stopPropagation()
或使用useCature
两者均未成功。
简而言之,我想要在控制台中显示以下波纹管: