我可以控制mousemove事件的频率吗

时间:2019-02-23 22:53:10

标签: javascript mousemove dom-events

我想将触发mousemove事件的频率提高一倍。当前,如果我将光标移到侦听mousemove事件的元素上,它将触发x次,我希望它触发2x次,有可能吗?

示例代码-使控制台输出的test字符串比当前多2倍

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

2 个答案:

答案 0 :(得分:2)

您可以使用属性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>

答案 1 :(得分:1)

不可能,它是由浏览器操纵的。

如果您希望控制台输出2倍以上的“测试”,则可以尝试在一个函数中输出两次。这是唯一的方法,但我可以理解为什么在很多情况下这并不理想。