2011-05-11 32 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/