Javascript中的mousemove触发是如何工作的?

9

我有一个对象,它会在每次鼠标移动时打印出鼠标的x和y位置。

大致代码如下:

$('#canvas').mousemove(function(e){
    $('#output').prepend(e.pageX + ',' + e.pageY);
});

我注意到当你快速移动鼠标时,它只会打印出几个位置。我并不是很在意这样做(因为对于你已经穿过的成百上千的像素来说,让它执行某些操作是相当费力的),但我想知道这是如何工作的。mousemove事件是否受每秒触发次数的限制?(顺便说一下:这是在Ubuntu Linux中的Chromium上测试的)

3
我认为这主要取决于所使用的浏览器和计算机;更多的内存/更快的 CPU 可能意味着在每个单位时间内进行更多次数的迭代。所以,考虑到这一点,我不会过分依赖于“mousemove”。 - Shaz
3个回答


1

0

我认为它是同步的。它不会在你移动鼠标时为每个像素触发,这意味着事件不会排队。

比如说,如果你有这样的代码。

$('#canvas').mousemove(function(e){
//Some code which takes seconds to execute 
//All subsequent events won't be dispatched while this event handler is executing. 
});

如果在鼠标移动事件处理程序执行时移动鼠标,则不会触发mousemove处理程序。

这里有一个处理程序的例子,它将需要几秒钟才能执行。--> http://jsfiddle.net/78Hf3/1/

还有一个只需要很少时间的例子--> http://jsfiddle.net/78Hf3/2/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接