Как узнать местоположение / координаты события-тапа с помощью jquery-mobile? - PullRequest
5 голосов
/ 14 февраля 2011

Jquery-mobile поддерживает следующие события:

http://jquerymobile.com/demos/1.0a3/docs/api/events.html

Как получить позицию события касания (например, в изображении) на мобильном устройстве?

$('#myimg').bind('tap', function(e){
  var x = ???;
  var y = ???;

  alert([x, y]);
})

Ответы [ 2 ]

3 голосов
/ 23 мая 2011

Причина, по которой вы не получите pageX и pageY, заключается в том, что вы получаете событие touchcancel, которое не содержит никакой информации о координатах (в конце концов, это не сенсорный экран). Это не фактическое нажатие или щелчок, это событие касания, которое не перемещалось (превышало порог) и было достаточно быстрым.

Я столкнулся с тем же самым, когда использовал плагин touchswipe для jQuery, и мне пришлось обходить его, сохраняя координаты в событии touchstart и извлекая его в отменяющем, чтобы иметь возможность извлечь координаты.

Вы хотите сохранить их в стартовом событии (vmousedown в jquery mobile?):

  event.touches[0].pageX
  event.touches[0].pageY

Кроме того, на мобильном устройстве вы должны умножить координаты на window.devicePixelRatio, чтобы получить точное положение на экране.

0 голосов
/ 14 февраля 2011

Я не знаю о Jquery mobile, но я только что попробовал демонстрационную страницу с холстом, которую я получил в своем iphone ... что вы просто нажимаете и рисуете круги, и это прекрасно работает.

и я просто использую e.pageX и e.pageY, как сказали выше люди

function getCursorPosition(e) {
    var x;
    var y;
    if (e.pageX != undefined && e.pageY != undefined) {
    x = e.pageX;
    y = e.pageY;
    }
    else {
    x = e.clientX + document.body.scrollLeft +
            document.documentElement.scrollLeft;
    y = e.clientY + document.body.scrollTop +
            document.documentElement.scrollTop;
    }
    x -= Ccanvas.offsetLeft;
    y -= Ccanvas.offsetTop;

    var Point = {
        x: x,
        y: y
        };
    return Point;
}
...