【问题标题】:Can I control frequency of mousemove event我可以控制 mousemove 事件的频率吗
【发布时间】:2019-02-23 22:53:09
【问题描述】:

我想将触发 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>

【问题讨论】:

    标签: javascript mousemove dom-events


    【解决方案1】:

    您可以使用属性dataset 存储一个计数器,并在mouseevent 被调用两次后,删除事件监听器。

    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>

    【讨论】:

      【解决方案2】:

      不可能,是浏览器操控的。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-09
        相关资源
        最近更新 更多