Как остановить захват событий в javascript? - PullRequest
0 голосов
/ 04 сентября 2018

Мы можем использовать event.stopPropagation () для остановки всплытия событий. Можем ли мы использовать тот же метод для остановки захвата событий?

Если нет, как мы можем этого достичь?

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Вы должны передать false в качестве 3 аргумента addEventListener. Отключает этап захвата событий.

document.body.addEventListener('click', onClickFunc, false);
0 голосов
/ 04 сентября 2018

Если слушатель был добавлен в фазу захвата , а не в фазу всплывающего , то вы можете предотвратить захват события дочерними элементами тем же способом: event.stopPropagation().

Например, в этом коде вы увидите, что слушатель #inner никогда не запускается, потому что слушатель #outer останавливает распространение события вниз:

document.querySelector('#outer').addEventListener(
  'click',
  function(event) {
    console.log('propagation stopped');
    event.stopPropagation();
  },
  true // Add listener to *capturing* phase
);

document.querySelector('#inner').addEventListener(
  'click',
  function(e) {
    console.log('inner clicked');
  }
);
<div id="outer">
  outer
  <div id="inner">
    inner
  </div>
</div>
...