터치 이벤트는 모바일 브라우저 고유의 HTML5 이벤트입니다. 클릭 이벤트는 PC 및 모바일 단말기에서 더 일반적이지만 모바일 단말기에서는 300ms 지연이 발생하며 이는 더블 클릭을 판단하는 데 영향을 미칩니다. 클릭 이벤트는 후속 작업이 발생하지 않도록 기본 대기 시간이 경과할 때까지 트리거되지 않기 때문입니다. 따라서 터치 이벤트 응답이 더 빠르고 경험이 더 좋습니다.
터치 이벤트 종류 :
터치 관련 상태 변화를 구별하기 위해 여러 유형의 터치 이벤트가 있습니다. 터치 이벤트의 <font face="NSimsun">TouchEvent.type</font>
속성을 검사하여 현재 이벤트 유형이 무엇인지 확인할 수 있습니다.
참고: 많은 경우 터치 이벤트와 마우스 이벤트가 동시에 발생합니다. (목적은 터치 장치에 최적화되지 않은 코드가 터치 시에도 정상적으로 작동하도록 허용하는 것입니다. 장치). 터치 이벤트를 사용하는 경우 <font face="NSimsun">event.preventDefault()</font>
을 호출하여 마우스 이벤트가 실행되는 것을 방지할 수 있습니다.
표준 터치 이벤트
<fontface>element</fontface>
의 대상은 다음의 대상 <fontface>element</fontface>
가 됩니다. 터치 위치 코드>事件名称 | 描述 | 包含touches数组 |
touchstart |
当用户在触摸平面上放置了一个触点时触发。事件的目标 <font face="NSimsun">element</font> 将是触点位置上的那个目标 <font face="NSimsun">element</font>
|
是 |
touchmove |
当用户在触摸平面上移动触点时触发。 事件的目标 哪怕当 |
是 |
touchend |
当一个触点被用户从触摸平面上移除(当用户将一个手指离开触摸平面)时触发。 当触点移出触摸平面的边界时也将触发。例如用户将手指划出屏幕边缘。 已经被从触摸平面上移除的触点,可以在 |
是 |
touchenter |
当触点进入某个 <font face="NSimsun">element</font> 时触发。此事件没有冒泡过程。
|
是 |
touchleave |
当触点离开某个 <font face="NSimsun">element</font> 时触发。此事件没有冒泡过程。
|
是 |
touchcancel |
当触点由于某些原因被中断时触发。有几种可能的原因如下(具体的原因根据不同的设备和浏览器有所不同):
|
是 |
<font face="NSimsun">element</font>
의 대상은 이 <font face="NSimsun"> touchmove </font>
에 해당합니다. > 이벤트 <font face="NSimsun">touchstart 이벤트</font>
의 대상은 <font face="NSimsun">요소</font>와 동일합니다. 코드> ,
<code><fontface>touchmove</fontface>
이벤트가 발생하더라도 터치 포인트가 <fontface>요소 밖으로 이동했습니다. </fontface>
.
TouchList
에 정의된 changedTouches 속성에서 찾을 수 있습니다.
<fontface>요소</fontface>
에 입력되면 트리거됩니다. 본 이벤트에는 버블링 과정이 없습니다. <fontface>요소</fontface>
를 떠날 때 시작됩니다. 본 이벤트에는 버블링 과정이 없습니다. <fontface>TouchList에서 가장 빠른 <code><font> code> ="NSimsun">Touch</font>
개체가 취소됩니다.
터치 개체 속성
<fontface>Touch.identifier</fontface>
<fontface>Touch.screenX</fontface>
<fontface>Touch.screenY</fontface>
<fontface>Touch.clientX</fontface>
<fontface>Touch.clientY</fontface>
<fontface>Touch.pageX</fontface>
가로 방향
스크롤
offset, 이 값에는 가로 스크롤 오프셋
이 포함됩니다. 읽기 전용 속성.
<fontface>Touch.pageY</fontface>
<fontface>가로 스크롤 오프셋이 있는 경우 이 값에는 세로 스크롤 오프셋이 포함됩니다. </fontface>
. 읽기 전용 속성.
<fontface>Touch.radiusX</fontface>
<fontface>과 같습니다. screenX.</fontface>
읽기 전용 속성.
<code><fontface>Touch.force</fontface>
<code><fontface>Touch.radiusY</fontface>
<fontface>과 같습니다. screenY. </fontface>
읽기 전용 속성.
<code><code><fontface>Touch.target</fontface>
<font face="NSimsun">Touch.identifier</font> |
返回一个可以唯一地识别和触摸平面接触的点的值. 这个值在这根手指(或触摸笔等)所引发的所有事件中保持一致, 直到它离开触摸平面. |
<font face="NSimsun">Touch.screenX</font> |
触点相对于屏幕左边沿的的X坐标. 只读属性. |
<font face="NSimsun">Touch.screenY</font> |
触点相对于屏幕上边沿的的Y坐标. 只读属性. |
<font face="NSimsun">Touch.clientX</font> |
触点相对于可见视区左边沿的的X坐标. 不包括任何滚动偏移. 只读属性. |
<font face="NSimsun">Touch.clientY</font> |
触点相对于可见视区上边沿的的Y坐标. 不包括任何滚动偏移. 只读属性. |
<font face="NSimsun">Touch.pageX</font> |
触点相对于HTML文档左边沿的的X坐标. 当存在水平 滚动的 偏移时, 这个值包含了水平滚动的偏移 . 只读属性.
|
<font face="NSimsun">Touch.pageY</font> |
触点相对于HTML文档上边沿的的Y坐标. <font face="NSimsun">当存在水平滚动的偏移时, 这个值包含了垂直滚动的偏移</font> . 只读属性.
|
<font face="NSimsun">Touch.radiusX</font> |
能够包围用户和触摸平面的接触面的最小椭圆的水平轴(X轴)半径. 这个值的单位和<font face="NSimsun"> screenX 相同. </font> 只读属性.
|
<code><font face="NSimsun">Touch.force</font> |
手指挤压触摸平面的压力大小, 从0.0(没有压力)到1.0(最大压力)的浮点数. 只读属性. |
<code><font face="NSimsun">Touch.radiusY</font> |
能够包围用户和触摸平面的接触面的最小椭圆的垂直轴(Y轴)半径. 这个值的单位和<font face="NSimsun"> screenY 相同. </font> 只读属性.
|
<code><code><font face="NSimsun">Touch.target</font> |
当这个触点最开始被跟踪时(在 或者这个元素已经被从文档中移除. 需要注意的是, 如果这个元素在触摸过程中被移除, 这个事件仍然会指向它, 但是不会再冒泡这个事件到 因此, 如果有元素在触摸过程中可能被移除, 最佳实践是将触摸事件的监听器绑定到这个元素本身, 防止元素被移除后, 无法再从它的上一级元素上侦测到从该元素冒泡的事件. 只读属性. |
<font face="NSimsun">touchstart</font>
이벤트에서) 터치 지점이 HTML 요소에 위치합니다. 포인트 이동 과정에서 터치 포인트의 위치가 이 요소의 유효 상호 작용 영역을 벗어났습니다. 또는 이 요소가 문서에서 제거되었습니다. 터치 프로세스 중에 이 요소가 제거되면 이 이벤트는 여전히 해당 요소를 가리키지만 이 이벤트는 더 이상
창
또는 <font face="NSimsun">문서</font>
개체.따라서 터치 프로세스 중에 제거될 수 있는 요소가 있는 경우 가장 좋은 방법은 터치 이벤트 리스너를 요소 자체에 바인딩하여 해당 요소가 부모 요소에서 제거되는 것을 방지하는 것입니다. 읽기 전용 속성입니다.
事件名称 | 描述(在触摸设备上) |
---|---|
MSPointerDown | 触摸开始 |
MSPointerMove | 接触点移动 |
MSPointerUp | 触摸结束 |
MSPointerOver | 触摸点移动到元素内,相当于mouseover |
MSPointerOut | 触摸点离开元素,相当于mouseout |
MSPointerEvent 속성
属性 | 描述 |
---|---|
hwTimestamp | 创建事件的时间(ms) |
isPrimary | 标识该指针是不是主指针 |
pointerId | 指针的唯一ID(类似于触摸事件的标识符) |
pointerType | 一个整数,标识了该事件来自鼠标、手写笔还是手指 |
pressure | 笔的压力,0-255,只有手写笔输入时才可用 |
rotation | 0-359的整数,光标的旋转度(如果支持的话) |
tiltX/tiltY | 手写笔的倾斜度,只有用手写笔输入时才支持 |
동등한 이벤트
鼠标 | 触摸 | 键盘 |
mousedown | touchstart | keydown |
mousemove | touchmove | keydown |
mouseup | touchend | keyup |
mouseover | focus |
분명히 터치 작업 순서: touchstart-touchmove-touchend와 마우스 순서: mousedown-mousemove-mouseup 및 키보드 순서: keydown-keypress-keyup은 세 가지 상호 작용 패턴이 모두 매우 유사하므로 이는 우연이 아닙니다. 시작-이동-정지로 설명할 수 있습니다.
그런데 클릭은 300ms의 지연을 두고 터치시작-터치이동-터치엔드 과정을 거쳐야 하므로 탭 이벤트가 필요한 것은 짧은 시간 동안 같은 지점을 터치한다는 의미입니다.
캡슐화된 탭 및 롱탭 이벤트
http://www.cnblogs.com/hutuzhu/archive/2016/03/25/5315638.html