raymanr
V2EX  ›  问与答

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

  •  
  •   raymanr · Apr 9, 2020 · 1239 views
    This topic created in 2224 days ago, the information mentioned may be changed or developed.

    $0 是一个 input 控件

    无事件监听

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

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

    这是怎么回事呢?

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

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

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

    想不通了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5425 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 09:33 · PVG 17:33 · LAX 02:33 · JFK 05:33
    ♥ Do have faith in what you're doing.