9

我有一个对象可以在每次鼠标移动时打印鼠标的 x 和 y 位置。

是这样的:

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

我注意到,当您快速移动对象时,它只会打印出几个位置。

我并不完全不满意它这样做(因为让它为你跨越的所有数百个像素做一些事情会非常详尽)但我想知道它是如何工作的。

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

(顺便说一句:这是在 Ubuntu Linux 的 Chromium 上测试的)

4

3 回答 3

2

“老鼠每秒只向操作系统报告它们的位置n次,我认为n通常小于100”

于 2011-05-11T18:58:08.727 回答
1

你可能想看看这个,因为这可能取决于浏览器,

http://javascript.info/tutorial/mouse-events#mousemove-and-mouseover-frequency,但是,如果你看这个问题,有一个关于如何获得更好响应的建议。

如何设置mousemove更新速度?

于 2011-05-11T19:04:56.830 回答
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/

于 2011-05-11T18:51:33.447 回答