Могу ли я контролировать частоту события мыши - PullRequest
0 голосов
/ 24 февраля 2019

Я бы хотел удвоить частоту срабатывания события mousemove.В настоящее время, если я наведу курсор на элемент, прослушивающий событие mousemove, он сработает x раз, я бы хотел, чтобы он сработал 2x раз, возможно ли это?

Пример кода - сделатьвывод на консоль в 2 раза чаще test строк, чем сейчас

const a = document.getElementById('test');
a.addEventListener('mousemove', () => {
  console.log('test')
})
#test {
  width: 600px;
  height: 600px;
  background: lightblue
}
<div id="test"></div>

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Вы можете использовать атрибут dataset для хранения счетчика и после двухкратного вызова mouseevent удалите eventListener.

const a = document.getElementById('test');
const listener = (e) => {  
  let times = e.target.dataset.mouseovertimes || 0;
  if (Number(times) > 1) {
    e.target.removeEventListener('mousemove', listener);
    return;
  }
  console.log('Event called!');  
  e.target.dataset.mouseovertimes = ++times;
  console.log('test');
}

a.addEventListener('mousemove', listener);
#test {
  width: 600px;
  height: 600px;
  background: lightblue
}
<div id="test"></div>
0 голосов
/ 24 февраля 2019

Это невозможно, им манипулирует браузер.

Если вы хотите, чтобы консоль выводила в 2 раза больше «теста», возможно, попробуйте вывести дважды в одной функции.Это единственный способ, но я понимаю, почему во многих случаях это не было бы идеально.

...