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

Can I control frequency of mousemove event

我想将触发 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 倍 'test' 可以尝试在一个函数中输出两次。这是唯一的方法,但我明白为什么在很多情况下这不是理想的方法。

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