V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
raymanr
V2EX  ›  问与答

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

  •  
  •   raymanr · 2020-04-09 09:38:24 +08:00 · 831 次点击
    这是一个创建于 1472 天前的主题,其中的信息可能已经有所发展或是发生改变。

    $0 是一个 input 控件

    无事件监听

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

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

    这是怎么回事呢?

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

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

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

    想不通了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2598 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:06 · PVG 13:06 · LAX 22:06 · JFK 01:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.