?1 /*!
2 * jQuery UI Touch Punch 0.2.2
?3 /*!
4 * Copyright 2011, Dave Furfero
5 * Licencia dual bajo las licencias MIT o GPL Versión 2.
6 * *
7 * Depende.
8 * jquery.ui.widget.js
9 * jquery.ui.mouse.js
10 */
11 (function ($) {
12 // Detectar soporte táctil.
13 // Detectar soporte táctil
14 $.support.touch = 'ontouchend' en el documento;
15 // Ignorar navegadores sin soporte táctil.
16 // Ignorar navegadores sin soporte táctil
17 if (!$.support.touch) {
18 return;
19 }
20
21 var mouseProto = $.ui.mouse.prototype, 22 _mouseInit = mouseProto.
22 _mouseInit = mouseProto._mouseInit,
23 touchHandled.
24
25 /**
26 * Simular un evento de ratón basado en un evento táctil correspondiente
27 * @param {Object} event Un evento táctil
28 * @param {String} simulatedType El evento de ratón correspondiente
29 @param {String} simulatedType
30 function simulateMouseEvent (event, simulatedType) {
31 function simulateMouseEvent
32 // Ignora los eventos multitáctiles
33 if (event.originalEvent.touches.length > 1) {
34 return; }
35 }
36 // If (event.originalEvent.touches.length > 1) { 34 return; 35 }
37 event.preventDefault(); event.originalEvent.touches.length > 1 { return; 36 }
38 var touch = event.originalEvent.changedTouches[0]; }
39 var touch = event.originalEvent.changedTouches[0],
40 simulatedEvent = document.createEvent('MouseEvents');
41 // Inicializa el evento simulado.
42 // Inicializa el evento simulado del ratón usando las coordenadas del evento touch
43 simulatedEvent.initMouseEvent(
44 simulatedType, // tipo
45 true, // burbujas
46 true, // cancelable
47 window, // vista
48 1, // detalle
49 touch.screenX, // pantallaX
50 touch.screenY, // pantallaY
51 touch.clientX, // clientX
52 touch.clientY, // clientY
53 false, // ctrlKey
54 false, // altKey
55 false, // shiftKey
56 false, // metaKey
57 0, // botón
58 null // relatedTarget
59 ); }
60 // Envía el evento simulado al elemento destino.
61 // Envía el evento simulado al elemento destino
62 event.target.dispatchEvent(simulatedEvent);
63 }
63 }
65 /**
66 * Maneja los eventos touchstart del widget jQuery UI
67 * @param {Object} event El evento touchstart del elemento widget
68 */
69 mouseProto._touchStart = function (event) {
70 var self = this; var mouseProto._touchStart = function (event) {
71 var self = this;
71 var self = this; }
73 // Ignora el evento si ya se está manejando otro widget
74 if (touchHandled || !self._mouseCapture(event.originalEvent.changedTouches[0])) {
75 return; }
76 }
77 // Establece la bandera para prevenir que otros eventos cambien.
78 // Establece la bandera para evitar que otros widgets hereden el evento touch
79 touchHandled = true;
80 // Rastrea el movimiento para determinar si la interacción fue un clic.
81 // Rastrea el movimiento para determinar si la interacción fue un click
82 self._touchMoved = false; 83 // Seguir el movimiento para determinar si la interacción fue un clic.
self._touchMoved = false; 83 // Simular el evento mouseover.
84 // Simular el evento mouseover
85 // Simular el evento mouseover; 85 simulateMouseEvent(event, 'mouseover');
86 // Simular el evento mouseover.
87 // Simular el evento mousemove
88 simulateMouseEvent(event, 'mousemove'); 89 // Simular el evento mousemove.
89 // Simular el evento mousemove.
90 // Simular el evento mousedown
91 simulateMouseEvent(event, 'mousedown'); 90 // Simula el evento mousedown; 91 // Simula el evento mousedown; 92 // Simula el evento mouse.
92 };
93 // Simula el evento mousedown.
94 /**
95 * Maneja los eventos touchmove del widget jQuery UI
96 * @param {Object} event Evento touchmove del documento
97 */
98 mouseProto._touchMove = function (event) {
99
100 // Ignora el evento si no ha sido manejado
101 if (!touchHandled) {
102 return;
103 }
104 // La interacción no fue un click
105 // La interacción no fue un click
106 this._touchMoved = true;
107 // Simula el evento mousemove.
108 // Simular el evento mousemove
109 simulateMouseEvent(event, 'mousemove');
110 }; }
111 // Simula el evento mousemove.
112 /**
113 * Maneja los eventos touchend del widget jQuery UI
114 * @param {Object} event El evento touchend del documento
115 */
116 mouseProto._touchEnd = function (event) {
117 Ignorar evento si no
118 // Ignora el evento si no es manejado
119 if (!touchHandled) {
120 return;
121 }
122 // Simula el evento mouseup.
123 // Simular el evento mouseup
124 simulateMouseEvent(event, 'mouseup');
125 // Simular el evento mouseup.
126 // Simular el evento mouseout
127 simulateMouseEvent(event, 'mouseout'); 128 // Simula el evento mouseup.
129 // Si la interacción táctil no funcionó, entonces no se podrá interactuar con el ratón.
129 // Si la interacción táctil no se movió, debería disparar un click
130 if (!this._touchMoved) {
131 // Simula el evento click.
132 // Simula el evento click
133 simulateMouseEvent(event, 'click');
134 }
134 }
136 // Desactiva la bandera para permitir que otros widgets hereden el evento touch
137 touchHandled = false;; 138 // Desactiva la bandera para permitir que otros widgets hereden el evento touch.
138 }
139 }
140 /**
141 * Un duck punch del método $.ui.mouse _mouseInit para soportar eventos táctiles.
142 * Este método extiende el widget con manejadores de eventos táctiles vinculados que
143 * traducen los eventos táctiles a eventos de ratón y los pasan a los métodos
144 * del widget.
145 */
146 mouseProto._mouseInit = function () {
146 mouseProto._mouseInit = function () {
148 var self = this;
149 // Delegar los manejadores táctiles al widget.
150 // Delegar los manejadores táctiles al elemento del widget
151 self.element
152 .bind('touchstart', $.proxy(self, '_touchStart'))
153 .bind('touchmove', $.proxy(self, '_touchMove'))
154 .bind('touchend', $.proxy(self, '_touchEnd'));
155 // Llama al $.proxy(self, '_touchEnd') original.
156 // Llama al método original $.ui.mouse init
157 _mouseInit.call(self); 158 }; }
158 };
159
160 })(jQuery);
Contacte con nosotros | |
---|---|
?No puede leer el tutorial? Póngase en contacto con nosotros para obtener una respuesta gratuita. Ayuda gratuita para sitios personales y de peque?as empresas |
![]() Servicio de atención al cliente WeChat
|
① Tel: 020-2206-9892 | |
② QQ咨詢:1025174874 | |
(iii) Correo electrónico: info@361sale.com | |
④ Horario de trabajo: de lunes a viernes, de 9:30 a 18:30, días festivos libres |
? Declaración de reproducción
Este artículo fue escrito por Harry
Enlace a este artículo:http://gqxi.cn/es/12533El artículo está protegido por derechos de autor y debe ser reproducido con atribución.
EL FIN
Sin comentarios