2011-05-11 63 views
7

我有一个对象在每个鼠标移动时打印鼠标的x和y位置。在Javascript中触发mousemove如何工作?

这件事情是这样的:

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

我注意到,当你移动了对象的真快,只打印出了几个位置。我并不是完全不满意它的确如此(因为它会对所有数百个像素点做一些相当详尽的操作),但我想知道它是如何工作的。

mousemove事件是否限于每秒一定数量的触发器或什么?

(顺便说一句:这是对铬的Ubuntu Linux操作系统进行测试)

+3

我认为这真的取决于浏览器和计算机的使用;更多的内存/更快的cpu可能===每'x'次更多的迭代次数。所以就这样,我不会严重依赖'mousemove'。 – Shaz 2011-05-11 18:25:14

回答

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/