---
title: TouchEvent
slug: Web/API/TouchEvent
tags:
- API
- DOM
- Interface
- NeedsTranslation
- Reference
- TopicStub
- touch
translation_of: Web/API/TouchEvent
---
{{ APIRef("Touch Events") }}
Интерфейс TouchEvent
отражает событие {{domxref("UIEvent")}}, возникающее при изменении состояния касаний к сенсорной поверхности. К таким поверхностям можно отнести, например, сенсорные экраны или трекпады. Событие может описывать одну или несколько точек касания экрана и включает поддержку обнаружения движения, добавление и удаление точек касаний и так далее.
Каждое прикосновение представлено объектом {{ domxref("Touch") }}, который содержит данные о позиции, размере, форме, степени давления и целевом элементе. Список прикосновений представлен объектом {{ domxref("TouchList") }}.
{{InheritanceDiagram}}
Конструктор
- {{domxref("TouchEvent.TouchEvent", "TouchEvent()")}}
- Создаёт экземпляр
TouchEvent
.
Свойства
Данный интерфейс наследует свойства своих предков, {{domxref("UIEvent")}} и {{domxref("Event")}}.
- {{ domxref("TouchEvent.altKey") }} {{readonlyInline}}
- Булево значение, показывающее, была ли нажата клавиша alt, когда произошло событие касания.
- {{ domxref("TouchEvent.changedTouches") }} {{readonlyInline}}
- Список {{ domxref("TouchList") }}, со всеми объектами {{ domxref("Touch") }}, представляющими отдельные точки касания, состояние которых изменилось между предыдущим событием касания и текущим.
- {{ domxref("TouchEvent.ctrlKey") }} {{readonlyInline}}
- Булево значение, показывающее, была ли нажата клавиша ctrl, когда произошло событие касания
- {{ domxref("TouchEvent.metaKey") }} {{readonlyInline}}
- Булево значение, показывающее, была ли нажата клавиша meta, когда произошло событие касания.
- {{ domxref("TouchEvent.shiftKey") }} {{readonlyInline}}
- Булево значение, показывающее, была ли нажата клавиша shift, когда произошло событие касания.
- {{ domxref("TouchEvent.targetTouches") }}{{readonlyInline}}
- Список {{ domxref("TouchList") }} со всеми объектами {{ domxref("Touch") }}, представляющими текущие точки касания с сенсорной поверхностью, которые находятся на одном и том же целевом элементе target.
- {{ domxref("TouchEvent.touches") }} {{readonlyInline}}
- Список {{ domxref("TouchList") }} со всеми объектами {{ domxref("Touch") }}, представляющими текущие точки касания с сенсорной поверхностью, вне зависимости от целевого элемента и статуса.
- {{domxref("TouchEvent.rotation")}} {{non-standard_inline()}} {{readonlyInline}}
- Изменение угла поворота (в градусах) с момента начала события. Положительные значения указывают на вращение по часовой стрелке, отрицательные - против часовой стрелки. Начальное значение
0.0
- {{domxref("TouchEvent.scale")}} {{non-standard_inline()}} {{readonlyInline}}
- Расстояние между двумя цифрами с момента начала события. Является числом с плавающей точкой, отражающим расстояние между двумя цифрами в начале события. Значения ниже 1.0 указывают на щипок (уменьшение зума), больше 1.0 - увеличение. Начальное значение:
1.0
Типы событий касания
Существует несколько типов событий, которые могут происходить в ответ на касания. Определить, какое именно событие произошло, можно с помощью свойства {{ domxref("event.type", "TouchEvent.type") }}.
{{domxref("Element/touchstart_event", "touchstart")}}
Происходит, когда пользователь касается сенсорной поверхности. Целью события будет являться экземпляр {{ domxref("Element") }}, которого коснулись.
{{domxref("Element/touchend_event", "touchend")}}
Происходит, когда пользователь удаляет точку касания поверхности (убирает палец или стилус с поверхности). Также это событие Происходит, если точка касания уходит за границы поверхности; например, если палец пользователя выходит за границу экрана.
Цель события - тот же экземпляр {{ domxref("Element") }}, что и для события touchstart
с соответствующей точкой касания, даже если точка касания переместилась за пределы элемента.
Точки касания, удалённые с поверхности, содержатся в списке {{ domxref("TouchList") }}, который можно получить через атрибут changedTouches
события.
{{domxref("Element/touchmove_event", "touchmove")}}
Происходит, когда пользователь двигает точку касания по поверхности. Цель события - тот же экземпляр {{ domxref("element") }}, что и для события touchstart
с соответствующей точкой касания, даже если точка касания переместилась за пределы элемента.
Это событие также возникает, если изменилось значение радиуса, угла вращения или силы нажатия в точке касания.
Примечание: Промежуток времени, в течении которого возникают события touchmove
, зависит от конкретного браузера, а также может сильно зависеть от возможностей устройства пользователя. Вам не следует полагаться на конкретную частоту возникновения этих событий.
{{domxref("Element/touchcancel_event", "touchcancel")}}
Происходит, если точка касания была по какой-либо причине удалена. Существует несколько возможных причин, почему это может произойти (и конкретные причины могут разниться от устройства к устройству, от браузера к браузеру):
- Произошло какое-то событие, отменившее прикосновение; это может произойти, если во время взаимодействия появляется модальное окно.
- Точка касания покинула окно документа и переместилась в область пользовательского интерфейса браузера, подключаемого модуля или другого внешнего содержимого.
- Пользователь задал больше точек касания на экране, чем поддерживается, в этом случае наиболее ранние точки {{ domxref("Touch") }} в списке {{ domxref("TouchList") }} будут отменены.
Использование addEventListener() и preventDefault()
Важно отметить, что во многих случаях происходят и события касаний, и события мыши (чтобы код, не использующий касания, мог продолжать взаимодействовать с пользователем). Если вы используете события касания, вам следует вызывать {{domxref("Event.preventDefault","preventDefault()")}} для предотвращения отправки событий мыши.
Исключением из этого правила является браузер Chrome, начиная с версии 56 (настольный, Chrome для android, и android webview), в которой значение по умолчанию для {{event("touchstart")}} и {{event("touchmove")}} равно true
и вызовы метода {{domxref("Event.preventDefault","preventDefault()")}} не требуются. Чтобы переопределить такое поведение, просто установите значение опции passive
равным false
как показано в примере ниже. Это изменение запрещает обработчику блокировать отрисовку страницы во время прокрутки пользователем. Демонстрация этого доступна на сайте Google Developer.
GlobalEventHandlers
{{SeeCompatTable}}
- {{ domxref("GlobalEventHandlers.ontouchstart") }} {{experimental_inline}}
- Обработчик {{domxref("GlobalEventHandlers","global event handler")}} для события {{event("touchstart")}}.
- {{ domxref("GlobalEventHandlers.ontouchend") }} {{experimental_inline}}
- Обработчик {{domxref("GlobalEventHandlers","global event handler")}} для события {{event("touchend")}}.
- {{ domxref("GlobalEventHandlers.ontouchmove") }} {{experimental_inline}}
- Обработчик {{domxref("GlobalEventHandlers","global event handler")}} для события {{event("touchmove")}}.
- {{ domxref("GlobalEventHandlers.ontouchcancel") }} {{experimental_inline}}
- Обработчик {{domxref("GlobalEventHandlers","global event handler")}} для события {{event("touchcancel")}}.
Пример
Смотрите пример в основной статье о событиях касания.
Спецификации
{{Specifications}}
Поддержка браузерами
{{Compat}}
Смотрите также
- {{domxref("Touch_events","Touch Events Overview")}}
- {{domxref("GestureEvent")}}
- {{domxref("MSGestureEvent")}}