Código fuente de WordPress - jquery-plugins (jquery.ui.touch-punch.js)

1	/*!
2	 * jQuery UI Touch Punch 0.2.2
3	 *
4	 * Copyright 2011, Dave Furfero
5	 * Dual licensed under the MIT or GPL Version 2 licenses.
6	 *
7	 * Depends:
8	 *  jquery.ui.widget.js
9	 *  jquery.ui.mouse.js
10	 */
11	(function ($) {
12	
13	  // Detect touch support
14	  $.support.touch = 'ontouchend' in document;
15	
16	  // Ignore browsers without touch support
17	  if (!$.support.touch) {
18	    return;
19	  }
20	
21	  var mouseProto = $.ui.mouse.prototype,
22	      _mouseInit = mouseProto._mouseInit,
23	      touchHandled;
24	
25	  /**
26	   * Simulate a mouse event based on a corresponding touch event
27	   * @param {Object} event A touch event
28	   * @param {String} simulatedType The corresponding mouse event
29	   */
30	  function simulateMouseEvent (event, simulatedType) {
31	
32	    // Ignore multi-touch events
33	    if (event.originalEvent.touches.length > 1) {
34	      return;
35	    }
36	
37	    event.preventDefault();
38	
39	    var touch = event.originalEvent.changedTouches[0],
40	        simulatedEvent = document.createEvent('MouseEvents');
41	   
42	    // Initialize the simulated mouse event using the touch event's coordinates
43	    simulatedEvent.initMouseEvent(
44	      simulatedType,    // type
45	      true,             // bubbles                   
46	      true,             // cancelable                 
47	      window,           // view                       
48	      1,                // detail                     
49	      touch.screenX,    // screenX                   
50	      touch.screenY,    // screenY                   
51	      touch.clientX,    // clientX                   
52	      touch.clientY,    // clientY                   
53	      false,            // ctrlKey                   
54	      false,            // altKey                     
55	      false,            // shiftKey                   
56	      false,            // metaKey                   
57	      0,                // button                     
58	      null              // relatedTarget             
59	    );
60	
61	    // Dispatch the simulated event to the target element
62	    event.target.dispatchEvent(simulatedEvent);
63	  }
64	
65	  /**
66	   * Handle the jQuery UI widget's touchstart events
67	   * @param {Object} event The widget element's touchstart event
68	   */
69	  mouseProto._touchStart = function (event) {
70	
71	    var self = this;
72	
73	    // Ignore the event if another widget is already being handled
74	    if (touchHandled || !self._mouseCapture(event.originalEvent.changedTouches[0])) {
75	      return;
76	    }
77	
78	    // Set the flag to prevent other widgets from inheriting the touch event
79	    touchHandled = true;
80	
81	    // Track movement to determine if interaction was a click
82	    self._touchMoved = false;
83	
84	    // Simulate the mouseover event
85	    simulateMouseEvent(event, 'mouseover');
86	
87	    // Simulate the mousemove event
88	    simulateMouseEvent(event, 'mousemove');
89	
90	    // Simulate the mousedown event
91	    simulateMouseEvent(event, 'mousedown');
92	  };
93	
94	  /**
95	   * Handle the jQuery UI widget's touchmove events
96	   * @param {Object} event The document's touchmove event
97	   */
98	  mouseProto._touchMove = function (event) {
99	
100	    // Ignore event if not handled
101	    if (!touchHandled) {
102	      return;
103	    }
104	
105	    // Interaction was not a click
106	    this._touchMoved = true;
107	
108	    // Simulate the mousemove event
109	    simulateMouseEvent(event, 'mousemove');
110	  };
111	
112	  /**
113	   * Handle the jQuery UI widget's touchend events
114	   * @param {Object} event The document's touchend event
115	   */
116	  mouseProto._touchEnd = function (event) {
117	
118	    // Ignore event if not handled
119	    if (!touchHandled) {
120	      return;
121	    }
122	
123	    // Simulate the mouseup event
124	    simulateMouseEvent(event, 'mouseup');
125	
126	    // Simulate the mouseout event
127	    simulateMouseEvent(event, 'mouseout');
128	
129	    // If the touch interaction did not move, it should trigger a click
130	    if (!this._touchMoved) {
131	
132	      // Simulate the click event
133	      simulateMouseEvent(event, 'click');
134	    }
135	
136	    // Unset the flag to allow other widgets to inherit the touch event
137	    touchHandled = false;
138	  };
139	
140	  /**
141	   * A duck punch of the $.ui.mouse _mouseInit method to support touch events.
142	   * This method extends the widget with bound touch event handlers that
143	   * translate touch events to mouse events and pass them to the widget's
144	   * original mouse event handling methods.
145	   */
146	  mouseProto._mouseInit = function () {
147	   
148	    var self = this;
149	
150	    // Delegate the touch handlers to the widget's element
151	    self.element
152	      .bind('touchstart', $.proxy(self, '_touchStart'))
153	      .bind('touchmove', $.proxy(self, '_touchMove'))
154	      .bind('touchend', $.proxy(self, '_touchEnd'));
155	
156	    // Call the original $.ui.mouse init method
157	    _mouseInit.call(self);
158	  };
159	
160	})(jQuery);

Contacte con nosotros
¿No puede leer el artículo? ¡Póngase en contacto con nosotros para obtener una respuesta gratuita! Ayuda gratuita para sitios personales y de pequeñas empresas
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
EL FIN
Si le gusta, apóyela.
felicitaciones0 compartir (alegrías, beneficios, privilegios, etc.) con los demás
comentarios compra de sofás

Por favor, inicie sesión para enviar un comentario

    Sin comentarios