Tenemos una aplicación móvil que muestra un comportamiento muy extraño. En escritorio funciona bien. Pero en los dispositivos móviles, los eventos táctiles no se gestionan correctamente.
Este es el código de configuración del evento:
document.addEventListener('mousemove', e => { this.mouseMoveListener(e); }); document.addEventListener('mousedown', e => { this.mouseDownListener(e); }); document.addEventListener('mouseup', e => { this.mouseUpListener(e); }); document.addEventListener('touchmove', e => firstTouchEventCancel(this.mouseMoveListener(e)), true); document.addEventListener('touchstart', e => firstTouchEventCancel(this.mouseDownListener(e)), true); document.addEventListener('touchend', e => firstTouchEventCancel(this.mouseUpListener(e)), true);la función firstTouchEventCancel es la siguiente:
export function firstTouchEventCancel(fn, thisObj) { if (thisObj) { fn = fn.bind(thisObj) } return function (e) { e.preventDefault() e.stopPropagation() return fn(e.changedTouches[0]) } }He registrado la variable e/event inmediatamente tanto en el método firstTouchEventCancel como en los métodos del controlador de eventos. En ambos casos el evento es un objeto vacío.
Necesito que el evento me diga dónde tocó y deslizó el usuario si está deslizando. Pero no obtengo nada. No hay otra configuración de controladores de eventos que pueda estar consumiendo el evento. Además, si existieran estos métodos, no se llamarían.
¿Alguien se ha encontrado con esto?
En todos los controladores de eventos en dispositivos móviles, los eventos enviados a los oyentes están vacíos.