Если я двигаюсь быстро с помощью мыши, e.pageX не распознает путь - PullRequest
0 голосов
/ 26 февраля 2012

У меня есть этот код:

$("#element").mousemove(function(e) {

   if(e.pageX == 255) {alert("here");}

});

Когда я быстро двигаюсь с помощью мыши, она не распознает весь путь, по которому она движется, возвращает, например, 260, а затем 210 - не как яя ожидал 260 259 258 ... Здесь возникает проблема - я не могу поймать точный момент, когда я прошел позицию, потому что он не возвращает эту позицию.Есть ли другой способ получить эту позицию пиксель за пикселем?Спасибо.

Ответы [ 2 ]

4 голосов
/ 26 февраля 2012

Нет способа заставить браузер уведомлять вас о каждом пикселе. Лучшее, что вы собираетесь сделать, - это каждое определенное количество миллисекунд (вероятно, для конкретного браузера).

Вы можете компенсировать это, проверяя, пересекли ли вы позицию каждый раз, когда вызывается ваша функция. Это не идеально, но лучше:

http://jsfiddle.net/v4gTV/2/

var prev = null;

$("#element").mousemove(function(e) {

    var now = e.pageX;

    if((prev < 50 && now > 50) || (prev > 50 && now < 50) || now == 50) {alert("crossed");}

    prev = now;
});​
0 голосов
/ 26 февраля 2012

Вы можете отслеживать ток и проверять, является ли значение «>» или «<» вашим значением, а затем запускать событие один раз каждый раз, когда оно проходит вашу точку

...