2011-05-11 18 views
7

Her fare üzerinde farenin x ve y konumlarını basan bir nesneyim var. Ben gerçekten hızlı nesnenin üzerine taşıdığınızda sadece birkaç pozisyon dışında yazdırır fark ettikMousemove'un tetiklenmesi Javascript'te nasıl çalışır?

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

:

Böyle bir şey.

Ben bunu yapmaz tam olarak mutsuz değilim ama bu nasıl çalıştığını merak ediyorum (o tüm geçtim piksel yüzlerce şey yapmak zorunda oldukça kapsamlı olacağından).

Mousemove olayı, saniyede belirli bir miktarda tetikleyici ile sınırlandırılmış mıdır?

(Btw: Bu Ubuntu Linux Krom üzerinde test edilmiştir)

+3

ben gerçekten kullanılan tarayıcı ve bilgisayarda bağlı olduğunu düşünüyorum; daha fazla bellek/daha hızlı işlemci muhtemelen x = zaman başına === daha fazla yineleme. Yani olduğu gibi olmakla, 'mousemove' 'a bağımlı olmazdım. – Shaz

cevap

0

ben senkron olduğunu düşünüyorum. Farenizi hareket ettirdiğiniz her piksel için tetiklenmez, bu da olayların sıraya alınmadığı anlamına gelir.

Böyle bir kodunuz var mı söyle.

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

Fareyi hareket ettiren olay yürütürken yürütürseniz fareyi söyleyin. mousemove işleyicisi tetiklenmeyecek.

Çalıştırılacak örnek, yürütmek için saniye sürecektir. -> sadece birkaç zaman alır http://jsfiddle.net/78Hf3/1/

Ve bir - bu tarayıcı bağımlı olabileceğinden>http://jsfiddle.net/78Hf3/2/