@ Крис Р. Доннелли на месте.Вам необходимо использовать комбинацию трех событий js (touchstart
, touchmove
и touchend
) для эффективного создания собственного распознавателя жестов.
Подход Google , вероятно, являетсядействительно хороший путь.Я еще не пробовал.
Вот базовый пример слушателя «touch up inside» для Mobile Safari, который прослушивает только js-события на целевом элементе.Он будет игнорировать любое касание, возникающее вне элемента, любое касание, которое заканчивается снаружи элемента, и любое касание, которое перетаскивается внутри элемента.Это не обрабатывает клики (вы должны добавить это, если вы тоже поддерживаете рабочий стол).
<script type="text/javascript">
document.getElementById("yourElementId").addEventListener('touchstart', touchstart, false);
document.getElementById("yourElementId").addEventListener('touchmove', touchmove, false);
document.getElementById("yourElementId").addEventListener('touchend', touchend, false);
var touchStartCoord = null;
function touchstart (e) {
touchStartCoord = {x: e.touches[0].pageX, y: e.touches[0].pageY};
return true;
};
function touchmove (e) {
if (touchStartCoord != null)
{
var tolerance = 10.0;
if (Math.abs(e.touches[0].pageX-touchStartCoord.x) > tolerance || Math.abs(e.touches[0].pageY-touchStartCoord.y) > tolerance)
{
// moved too far, cancels event for this touch
touchStartCoord = null;
}
}
return true;
};
function touchend (e) {
if (touchStartCoord != null)
{
window.location.href = "http://geospike.com/";
return true;
}
};
</script>
Если вы хотите поддерживать несколько элементов, вы можете обернуть его многократно.