Heim >Web-Frontend >H5-Tutorial >HTML5-Touch-Event-Entwicklung Tap-Event-Einführung_HTML5-Tutorial-Fähigkeiten

HTML5-Touch-Event-Entwicklung Tap-Event-Einführung_HTML5-Tutorial-Fähigkeiten

WBOY
WBOYOriginal
2016-05-16 15:45:252114Durchsuche

Touch-Ereignisse sind HTML5-Ereignisse, die nur für mobile Browser gelten. Obwohl Klickereignisse häufiger auf PCs und mobilen Endgeräten auftreten, kommt es auf dem mobilen Endgerät zu einer Verzögerung von 300 ms, die sich auf die Beurteilung von Doppelklicks auswirkt und langes Drücken, da nur das Klickereignis erst nach Ablauf der Standardwartezeit ausgelöst wird, um sicherzustellen, dass keine nachfolgenden Aktionen ausgeführt werden. Dadurch ist die Reaktion auf Berührungsereignisse schneller und das Erlebnis besser.

Art des Berührungsereignisses:

Um berührungsbedingte Zustandsänderungen zu unterscheiden, gibt es mehrere Arten von Berührungsereignissen. Sie können feststellen, um welchen Typ es sich bei dem aktuellen Ereignis handelt, indem Sie das Attribut <font face="NSimsun">TouchEvent.type</font> des Berührungsereignisses untersuchen.

Hinweis: In vielen Fällen werden Berührungsereignisse und Mausereignisse gleichzeitig ausgelöst (der Zweck besteht darin, zu ermöglichen, dass Code, der nicht für Touch-Geräte optimiert ist, bei Berührung weiterhin normal funktioniert). Geräte). Wenn Sie Berührungsereignisse verwenden, können Sie <font face="NSimsun">event.preventDefault()</font> aufrufen, um zu verhindern, dass Mausereignisse ausgelöst werden.

Standard-Touch-Ereignisse

Ereignisname Beschreibung Enthält das Touches-Array

touchstart

Wird ausgelöst, wenn der Benutzer einen Berührungspunkt auf der Berührungsoberfläche platziert. Das Ziel des Ereignisses <font face="NSimsun">element</font> wird das Ziel <font face="NSimsun">element</font> sein der Touch-Standortcode Ja

touchmove

事件名称 描述 包含touches数组

touchstart

当用户在触摸平面上放置了一个触点时触发。事件的目标 <font face="NSimsun">element</font> 将是触点位置上的那个目标 <font face="NSimsun">element</font>

touchmove

当用户在触摸平面上移动触点时触发。

事件的目标 <font face="NSimsun">element</font> 和这个<font face="NSimsun"> touchmove </font>事件对应的 <font face="NSimsun">touchstart 事件的目标</font> <font face="NSimsun">element</font> 相同,

哪怕当 <font face="NSimsun">touchmove</font> 事件触发时,触点已经移出了该 <font face="NSimsun">element</font> 。

touchend

当一个触点被用户从触摸平面上移除(当用户将一个手指离开触摸平面)时触发。

当触点移出触摸平面的边界时也将触发。例如用户将手指划出屏幕边缘。

已经被从触摸平面上移除的触点,可以在 changedTouches 属性定义的 TouchList 中找到。

touchenter

当触点进入某个 <font face="NSimsun">element</font> 时触发。此事件没有冒泡过程。

touchleave

当触点离开某个 <font face="NSimsun">element</font> 时触发。此事件没有冒泡过程。

touchcancel

当触点由于某些原因被中断时触发。有几种可能的原因如下(具体的原因根据不同的设备和浏览器有所不同):

  • 由于某个事件取消了触摸:例如触摸过程被一个模态的弹出框打断。
  • 触点离开了文档窗口,而进入了浏览器的界面元素、插件或者其他外部内容区域。
  • 当用户产生的触点个数超过了设备支持的个数,从而导致 <font face="NSimsun">TouchList</font> 中最早的 <font face="NSimsun">Touch</font> 对象被取消。
Wird ausgelöst, wenn der Benutzer einen Kontaktpunkt auf der Touch-Oberfläche bewegt. Das Ziel des Ereignisses <font face="NSimsun">element</font> entspricht diesem <font face="NSimsun"> touchmove </font> Ereignis Das Ziel des <font face="NSimsun">Touchstart-Ereignisses</font> ist dasselbe wie das <font face="NSimsun">Element</font> Code> , Selbst wenn das Ereignis <font face="NSimsun">touchmove</font> ausgelöst wird, hat sich der Berührungspunkt aus dem Element <font face="NSimsun">bewegt </font>.
Ja

touchend

Wird ausgelöst, wenn ein Berührungspunkt vom Benutzer von der Berührungsoberfläche entfernt wird (wenn der Benutzer einen Finger von der Berührungsoberfläche hebt). Wird auch ausgelöst, wenn sich der Kontakt außerhalb der Grenzen der Berührungsebene bewegt. Beispielsweise zieht der Benutzer seinen Finger über den Rand des Bildschirms. Berührungen, die aus der Berührungsebene entfernt wurden, finden Sie im Attribut changedTouches, das in der TouchList definiert ist. Ja

touchenter

Wird ausgelöst, wenn ein Kontakt ein <font face="NSimsun">Element</font> betritt. Diese Veranstaltung hat keinen Sprudelprozess. Ja

touchleave

Wird ausgelöst, wenn ein Kontakt ein <font face="NSimsun">Element</font> verlässt. Diese Veranstaltung hat keinen Sprudelprozess. Ja

touchcancel

Wird ausgelöst, wenn ein Kontakt aus irgendeinem Grund unterbrochen wird. Es gibt mehrere mögliche Gründe:
  • Die Berührung wurde aufgrund eines Ereignisses abgebrochen: Beispielsweise wurde der Berührungsvorgang durch ein modales Popup-Fenster unterbrochen.
  • Der Berührungspunkt verlässt das Dokumentfenster und gelangt zu den Oberflächenelementen, Plug-Ins oder anderen externen Inhaltsbereichen des Browsers.
  • Wenn die Anzahl der vom Benutzer generierten Berührungspunkte die vom Gerät unterstützte Anzahl überschreitet, was zum frühesten <font face="NSimsun">TouchList</font> führt. code> ="NSimsun">Touch Objekt wird abgebrochen.
Ja

Objekteigenschaften berühren

<font face="NSimsun">Touch.identifier</font> Gibt einen Wert zurück, der den Kontaktpunkt mit der Berührungsebene eindeutig identifiziert. Dieser Wert bleibt über alle von diesem Finger (oder Stift usw.) ausgelösten Ereignisse hinweg konsistent, bis er die Berührungsebene verlässt.
<font face="NSimsun">Touch.screenX</font> Die X-Koordinate des Berührungspunkts relativ zum linken Rand des Bildschirms. Schreibgeschützte Eigenschaft.
<font face="NSimsun">Touch.screenY</font> Die Y-Koordinate des Berührungspunkts relativ zum oberen Rand des Bildschirms. Schreibgeschützte Eigenschaft.
<font face="NSimsun">Touch.clientX</font> Die X-Koordinate des Berührungspunkts relativ zum linken Rand des sichtbaren Ansichtsfensters. Enthält keine Schreibgeschützte Eigenschaft.
<font face="NSimsun">Touch.clientY</font> Die Y-Koordinate des Berührungspunkts relativ zum oberen Rand des sichtbaren Ansichtsfensters. Enthält keine Schreibgeschützte Eigenschaft.
<font face="NSimsun">Touch.pageX</font> Die X-Koordinate des Berührungspunkts relativ zum linken Rand des HTML-Dokuments. Bei horizontalemScrollenoffset, Dieser Wert enthält den horizontalen Scroll-Offset Schreibgeschützte Eigenschaft.
<font face="NSimsun">Touch.pageY</font> Die Y-Koordinate des Berührungspunkts relativ zum oberen Rand des HTML-Dokuments. <font face="NSimsun">Wenn ein horizontaler Scroll-Offset vorhanden ist, umfasst dieser Wert den vertikalen Scroll-Offset</font> . Schreibgeschütztes Attribut.
<font face="NSimsun">Touch.radiusX</font> Der Radius der horizontalen Achse (X-Achse) der kleinsten Ellipse, die die Kontaktfläche zwischen dem Benutzer und der Touch-Oberfläche umschließen kann. Die Einheit dieses Werts ist dieselbe wie <font face="NSimsun"> screenX. </font>Schreibgeschütztes Attribut.
<code><font face="NSimsun">Touch.force</font> Der Druck, den der Finger auf die Touch-Oberfläche ausübt, eine Gleitkommazahl von 0,0 (kein Druck) bis 1,0 (maximaler Druck). Schreibgeschützte Eigenschaft.
<code><font face="NSimsun">Touch.radiusY</font> Der Radius der vertikalen Achse (Y-Achse) der kleinsten Ellipse, die die Kontaktfläche zwischen dem Benutzer und der Touch-Oberfläche umschließen kann. Die Einheit dieses Werts ist dieselbe wie <font face="NSimsun"> screenY. </font>Schreibgeschütztes Attribut.
<code><code><font face="NSimsun">Touch.target</font>
<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">window</font> 或 <font face="NSimsun">document</font> 对象.

因此, 如果有元素在触摸过程中可能被移除, 最佳实践是将触摸事件的监听器绑定到这个元素本身, 防止元素被移除后, 无法再从它的上一级元素上侦测到从该元素冒泡的事件. 只读属性.

Wenn dieser Berührungspunkt zum ersten Mal verfolgt wird (im Ereignis <font face="NSimsun">touchstart</font>), befindet sich der Berührungspunkt im HTML-Element, auch wenn die Berührung erfolgt Punkt bewegt sich Während des Vorgangs hat die Position des Berührungspunkts den effektiven Interaktionsbereich dieses Elements verlassen,

Oder dieses Element wurde aus dem Dokument entfernt. Es ist zu beachten, dass dieses Ereignis weiterhin darauf verweist, wenn dieses Element während des Touch-Vorgangs entfernt wird, dieses Ereignis jedoch nicht mehr zur Schriftart aufsteigt face="NSimsun">Fenster oder <font face="NSimsun">Dokument</font> Objekt.

Wenn also ein Element während des Touch-Vorgangs entfernt werden kann, besteht die beste Vorgehensweise darin, den Touch-Ereignis-Listener an das Element selbst zu binden, um zu verhindern, dass das Element aus seinem übergeordneten Element entfernt wird. Es wurde ein Sprudelndes Ereignis erkannt aus diesem Element. Schreibgeschütztes Attribut.

IE指针事件
事件名称 描述(在触摸设备上)
MSPointerDown 触摸开始
MSPointerMove 接触点移动
MSPointerUp 触摸结束
MSPointerOver 触摸点移动到元素内,相当于mouseover
MSPointerOut 触摸点离开元素,相当于mouseout
Touch-Ereignisse in IE10

MSPointerEvent-Eigenschaft

属性 描述
hwTimestamp 创建事件的时间(ms)
isPrimary 标识该指针是不是主指针
pointerId 指针的唯一ID(类似于触摸事件的标识符)
pointerType 一个整数,标识了该事件来自鼠标、手写笔还是手指
pressure 笔的压力,0-255,只有手写笔输入时才可用
rotation 0-359的整数,光标的旋转度(如果支持的话)
tiltX/tiltY 手写笔的倾斜度,只有用手写笔输入时才支持

Äquivalente Veranstaltungen

鼠标 触摸 键盘
mousedown touchstart keydown
mousemove touchmove keydown
mouseup touchend keyup
mouseover   focus

Offensichtlich sind die Touch-Aktionssequenz: Touchstart-Touchmove-Touchend und die Maussequenz: Mousedown-Mousemove-Mouseup und die Tastatursequenz: Keydown-Keypress-Keyup sehr ähnlich, da alle drei Interaktionsmuster sehr ähnlich sind kann für Start-Bewegung-Stopp beschrieben werden.

Allerdings muss der Klick den Touchstart-Touchmove-Touchend-Prozess mit einer Verzögerung von 300 ms durchlaufen, sodass ein Tap-Ereignis erforderlich ist, um den gleichen Punkt für kurze Zeit zu berühren.

Gekapselte Tap- und Longtap-Ereignisse

XML/HTML-CodeInhalt in die Zwischenablage kopieren
  1. (function() {    
  2.     var TOUCHSTART, TOUCHEND;    
  3.     if (typeof(window.ontouchstart) != 'undefiniert') {    
  4.         TOUCHSTART = 'touchstart';    
  5.         TOUCHEND = 'touchend';    
  6.         TOUCHMOVE='touchmove';    
  7.      
  8.     } else if (typeof(window.onmspointerdown) != 'undefiniert') {    
  9.         TOUCHSTART = 'MSPointerDown';    
  10.         TOUCHEND = 'MSPointerUp';    
  11.         TOUCHMOVE='MSPointerMove';    
  12.     } else {    
  13.         TOUCHSTART = 'mousedown';    
  14.         TOUCHEND = 'mouseup';    
  15.         TOUCHMOVE = 'mousemove';    
  16.     }    
  17.     Funktion NodeTouch(node) {    
  18.         this._node = node;    
  19.     }    
  20.     function tap(node,callback,scope) {    
  21.         node.addEventListener(TOUCHSTART, function(e) {    
  22.             x = e.touches[0].pageX;    
  23.             y = e.touches[0].pageY;    
  24.         });    
  25.         node.addEventListener(TOUCHEND, function(e) {    
  26.             e.stopPropagation();    
  27.             e.preventDefault();    
  28.             var curx = e.changedTouches[0].pageX;    
  29.             var cury = e.changedTouches[0].pageY;    
  30.             if (Math.abs(curx - x) < 6 && Math.abs(cury - y) < 6) {    
  31.                 callback.apply(scope, arguments);    
  32.             }    
  33.         });    
  34.     }    
  35.     function longTap(node,callback,scope) {    
  36.         var x,y,startTime=0,endTime=0,in_dis=false;    
  37.         node.addEventListener(TOUCHSTART, function(e) {    
  38.             x = e.touches[0].pageX;    
  39.             y = e.touches[0].pageY;    
  40.             startTime=(new Date()).getTime();    
  41.         });    
  42.         node.addEventListener(TOUCHEND, function(e) {    
  43.             e.stopPropagation();    
  44.             e.preventDefault();    
  45.             var curx = e.changedTouches[0].pageX;    
  46.             var cury = e.changedTouches[0].pageY;    
  47.             if (Math.abs(curx - x) < 6 && Math.abs(cury - y) < 6) {    
  48.                 in_dis=true;    
  49.             }else{    
  50.                 in_dis=false;    
  51.             }    
  52.             endTime=(new Date()).getTime();    
  53.             if (endTime - startTime > 300 && in_dis) {    
  54.                 callback.apply(scope, arguments);    
  55.             }    
  56.         });    
  57.     }    
  58.     NodeTouch.prototype.on = Funktion(evt, callback, scope) {    
  59.         var scopeObj;    
  60.         var x,y;    
  61.         if (!scope) {    
  62.             scopeObj = this._node;    
  63.         } else {    
  64.             scopescopeObj = scope;    
  65.         }    
  66.         if (evt === 'tap') {    
  67.             tap(this._node,callback,scope);    
  68.         } else if(evt === 'longtap'){    
  69.             longTap(this._node,callback,scope);    
  70.         } else {    
  71.             this._node.addEventListener(evt, function() {    
  72.                 callback.apply(scope, arguments);    
  73.             });    
  74.         }    
  75.         dies zurückgeben;    
  76.     }    
  77.     window.$ = function(selector) {    
  78.         var node = document.querySelector(selector);    
  79.         if (node) {    
  80.             return new NodeTouch(node);    
  81.         } else {    
  82.             return null;    
  83.         }    
  84.     }    
  85. })();    
  86. var box=$("#box");    
  87. box.on("longtap",function(){    
  88.     console.log("你已经长按了");    
  89. },Box)  

以上这篇HTML5触摸事件演化tap事件介绍就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家.

原文地址:http://www.cnblogs.com/hutuzhu/archive/2016/03/25/5315638.html

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn