
Характерной особенностью большей части современных мобильных устройств выступает комплектование сенсорными экранами. Последние называются touch screen или, в русскоязычном варианте, тачскрин. Благодаря им появляется возможность задействования так называемых touch-событий, когда управление устройством ведется не с помощью мышки, как для обычного ПК, а посредством прикосновений. Рассмотрим подробнее, как решается задача программирования функционала веб сайтов для управления тачскрином мобильного устройства в самом популярном языке frontend-программирования Java Script.

Количество мобильных устройств с сенсорными экранами постоянно растет. Вершиной прогресса стали популярные сегодня Bond Touch – парные браслеты, позволяющие обмениваться эмоциями на расстоянии посредством прикосновения к изделию.
Логичным следствием востребованности тачскринов стала необходимо адаптации сайтов для работы с ними.
Чтобы понять, как она происходит с применением возможностей языка программирования JavaScript, требуется перечислить несколько вводных моментов. Первый касается четырех основных touch-событий. В их числе:
Чтобы модифицировать интерфейс сайта для работы с тачскрином перечисленных выше четырех событий вполне достаточно. Сведения о touch-событиях размещаются в трех списках:
В завершении части статьи, предваряющей непосредственное написание кода, необходимо перечислить данные непосредственно о пальце, контактирующем с экраном. Они необходимы для идентификации конкретного touch-события и включают три реквизита:
Большая часть терминов достаточно легко переводится и четко ассоциируется с конкретными действиями пользователя.Что существенно упрощает процесс программирования, для эффективного ведения которого достаточно базовых знаний английского языка.
С помощью описанного выше функционала вполне реально описать основные виды взаимодействий с сенсорным экраном в процессе использования веб-сайта. Чтобы лучше понять приведенный далее программный код целесообразно выделить четыре основных и две вспомогательных функции. К числу первых относятся:
Две вспомогательных функции выглядят следующим образом:
Посредством задействования перечисленных выше функциональных возможностей и инструментов можно написать скрипт для управления веб сайта с помощью сенсорного экрана.Программный код приложения выглядит следующим образом.
//Получение холста и его контекста const canvas = document.getElementById("canvas"); const ctx = canvas.getContext("2d"); //Чувствительность — количество пикселей, после которого жест будет считаться свайпом const sensitivity = 20; //Получение поля, в котором будут выводиться сообщения const msgBox = document.getElementById("msg-box"); var touchStart = null; //Точка начала касания var touchPosition = null; //Текущая позиция //Перехватываем события canvas.addEventListener("touchstart", function (e) { TouchStart(e); }); //Начало касания canvas.addEventListener("touchmove", function (e) { TouchMove(e); }); //Движение пальцем по экрану //Пользователь отпустил экран canvas.addEventListener("touchend", function (e) { TouchEnd(e, "green"); }); //Отмена касания canvas.addEventListener("touchcancel", function (e) { TouchEnd(e, "red"); }); function TouchStart(e) { //Получаем текущую позицию касания touchStart = { x: e.changedTouches[0].clientX, y: e.changedTouches[0].clientY }; touchPosition = { x: touchStart.x, y: touchStart.y }; Draw(touchPosition.x, touchPosition.y, 6, "blue"); //Рисуем точку начала касания } function TouchMove(e) { //Получаем новую позицию touchPosition = { x: e.changedTouches[0].clientX, y: e.changedTouches[0].clientY }; Draw(touchPosition.x, touchPosition.y, 2); //Рисуем точку текущей позиции } function TouchEnd(e, color) { DrawLine(); //Рисуем линию между стартовой и конечной точками Draw(touchPosition.x, touchPosition.y, 6, color); //Рисуем конечную точку CheckAction(); //Определяем, какой жест совершил пользователь //Очищаем позиции touchStart = null; touchPosition = null; } function CheckAction() { var d = //Получаем расстояния от начальной до конечной точек по обеим осям { x: touchStart.x - touchPosition.x, y: touchStart.y - touchPosition.y }; var msg = ""; //Сообщение if(Math.abs(d.x) > Math.abs(d.y)) //Проверяем, движение по какой оси было длиннее { if(Math.abs(d.x) > sensitivity) //Проверяем, было ли движение достаточно длинным { if(d.x > 0) //Если значение больше нуля, значит пользователь двигал пальцем справа налево { msg = "Swipe Left"; } else //Иначе он двигал им слева направо { msg = "Swipe Right"; } } } else //Аналогичные проверки для вертикальной оси { if(Math.abs(d.y) > sensitivity) { if(d.y > 0) //Свайп вверх { msg = "Swipe up"; } else //Свайп вниз { msg = "Swipe down"; } } } msgBox.innerText = msg; //Выводим сообщение } function Draw(x, y, weight, color = "#000") //Функция рисования точки { ctx.fillStyle = color; let weightHalf = weight / 2; ctx.fillRect(x - weightHalf, y - weightHalf, weight, weight); } function DrawLine() //Функция рисования линии { ctx.strokeStyle = "#ccc"; ctx.beginPath(); ctx.moveTo(touchStart.x, touchStart.y); ctx.lineTo(touchPosition.x, touchPosition.y); ctx.stroke(); }Для большей наглядности имеет смысл привести описания нескольких отдельных операций, доступных для пользователя мобильного устройства с тачскрином.
Они имеют намного более короткий и простой программный код.Обычное прикосновение пальца к экрану с последующим прекращением контакта. Самый простой способ описания этого действия выглядит так.
obj.addEventListener('touchstart', function(event) { if (event.targetTouches.length == 1) { var myclick=event.targetTouches[0]; /*Ваш код*/ } }, false);Возможности JavaScript позволяют несколько вариантов программирования действия. Самый простой предусматривает фиксацию начала контакта (как места, так и времени), окончания контакта и проверку изменения местоположения пальца пользователя.
var ldelay; var betw={}; document.addEventListener('touchstart', function(event) { event.preventDefault(); event.stopPropagation(); ldelay=new Date(); betw.x=event.changedTouches[0].pageX; betw.y=event.changedTouches[0].pageY; }, false); //Ловим отпускание пальца// document.addEventListener('touchend', function(event) { var pdelay=new Date(); if(event.changedTouches[0].pageX==betw.x && event.changedTouches[0].pageY==betw.y && (pdelay.getTime()-ldelay.getTime())>800){ //Здесь ваш код// } }, false);Одна из самых стандартных для мобильных устройств операций. Ее востребованность объясняется предельно просто – небольшим размером экрана, результатом чего становится необходимость частого обновления информации. Одна из реализаций действия с помощью JavaScript имеет следующий вид.
var initialPoint; var finalPoint; document.addEventListener('touchstart', function(event) { event.preventDefault(); event.stopPropagation(); initialPoint=event.changedTouches[0]; }, false); document.addEventListener('touchend', function(event) { event.preventDefault(); event.stopPropagation(); finalPoint=event.changedTouches[0]; var xAbs = Math.abs(initialPoint.pageX - finalPoint.pageX); var yAbs = Math.abs(initialPoint.pageY - finalPoint.pageY); if (xAbs > 20 || yAbs > 20) { if (xAbs > yAbs) { if (finalPoint.pageX < initialPoint.pageX){ //СВАЙП ВЛЕВО//} else{ //СВАЙП ВПРАВО//} } else { if (finalPoint.pageY < initialPoint.pageY){ //СВАЙП ВВЕРХ//} else{ //СВАЙП ВНИЗ//} } } }, false);Аналогичным образом происходит программирование других популярных действий с тачскрином. Например, Pitch (или щепотка) и Drag’n’Drop (или перетаскивание элемента).
В завершении необходимо перечислить несколько полезных инструментов, способных упростить и визуализировать работу над кодом.В их числе:
Тачскрин (от английского touch screen) – сенсорный экран, который предназначен для управления содержимым посредством прикосновений – пальцев или специального инструмента. Практически все современные мобильные устройства оснащаются тачскрином.
Для этого требуется внести корректировки в существующее ПО, добавив описание функций работы пользователя на сайте с помощью тачскрина. Чаще всего задача решается с помощью языка программирования JavaScript.
Функционал управления сайтом посредством тачскрина включает необходимость описания нескольких действий – касания, длительного касания, листания и т.д.
В распоряжении начинающих разработчиков находится немало вспомогательных сервисов. В числе наиболее известных нужно отметить такие: Fotorama, jQ Touch, Sencha Touch и swip-js.