JS: getEventListeners($0) 获取到的是空字典, 但是更改 $0 会连带产生其他控件的值变化, 何解?

2020-04-09 09:38:24 +08:00
 raymanr

$0 是一个 input 控件

无事件监听

$0.value = "1" 不会导致其他控件的数值变动,
$0.value = "1" 然后鼠标执行 focus , blur 动作不会导致其他控件数值变动

但是普通的输入和更改会导致关联数值变动

这是怎么回事呢?

902 次点击
所在节点    问与答
3 条回复
SunriseFox
2020-04-09 10:13:21 +08:00
如果是 React 应用的话,事件是统一等冒泡到 document 在 document 上捕获并生成合成事件由 React 处理的 0…0 如果需要响应的话,可以 dispatch 一个 CustomEvent
raymanr
2020-04-09 10:30:49 +08:00
@SunriseFox
冒泡的可能性我也考虑过, 所以手动执行了 focus, blur 的动作, 不过后头仔细观察了下应该是 input 事件,
然后挨着每个父节点都看了以下 EventListener , 没发现哪个父节点有 input 事件
页面主要是靠 jQuery , 服务端渲染的 MVC 页面, 控件应该都是后端用 Razor 写的
raymanr
2020-04-09 13:57:45 +08:00
最新进展:

$0.addEventListener("input",function(event){ event.stopPropagation();})

用这个方法阻止冒泡还是不能阻止事件发生

想不通了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/660665

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX