gpt4 book ai didi

javascript - Javascript mousemove 事件处理程序会阻止 mousemove 事件吗?

转载 作者:行者123 更新时间:2023-11-30 17:23:37 25 4
gpt4 key购买 nike

如果我有一个密集的 mousemove 处理程序

window.moveEventCounter = 0;
window.addEventHandler("mousemove", function(e) {
for (var i = 0; i < 100; i++) {
console.log(i);
}
window.moveEventCounter++;
});

处理的 mousemove 事件数少于为相同(或相似)鼠标操作注册快速事件处理程序时的事件数。

我认为这是浏览器引擎很聪明,不会在执行繁重时过度填充事件队列,但这不是我所期望的。

浏览器删除(或不发出)mousemove 事件的策略是什么? (此行为在 Firefox 30 上观察到)

最佳答案

浏览器肯定会“丢弃”一些 mousemove 事件,主要是因为它不能对光标经过的每个像素执行一次您的函数。执行频率取决于浏览器本身:

The frequency rate of events while the pointing device is moved is implementation-, device-, and platform-specific, but multiple consecutive mousemove events should be fired for sustained pointer-device movement, rather than a single event for each instance of mouse movement. Implementations are encouraged to determine the optimal frequency rate to balance responsiveness with performance.

Source: http://www.w3.org/TR/DOM-Level-3-Events/#event-type-mousemove

Firefox 可能会在最后一个事件完成时触发另一个 mousemove 事件,因为 JavaScript 是单线程的,它不想填满堆栈。您可以说 Firefox 正在“阻止”事件,但我想说的是 Firefox 触发事件的频率较低。

关于javascript - Javascript mousemove 事件处理程序会阻止 mousemove 事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24689347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com