Estoy construyendo una interfaz que debería funcionar con el mouse o el tacto. Mi usuario puede tener dificultades para alcanzar el objetivo deseado debido a una variedad de problemas físicos.
Los eventos de puntero parecen perfectos para esto, pero obtengo un comportamiento diferente.
Quiero saber cuándo el puntero entra y sale de un objetivo, así como cuándo está abajo. Usando el mouse, si presiono un botón del mouse sobre el objetivo T1 y me muevo (mientras sostengo el botón) al objetivo T2, obtengo el puntero sobre T1, el puntero hacia abajo T1, el puntero hacia afuera T1, el puntero sobre T2, el puntero hacia arriba T2. Justo lo que espero.
Con una pantalla táctil obtengo: puntero sobre T1, puntero hacia abajo T1, puntero hacia arriba T1. Ninguna señal de que me moví de un objetivo a otro.
¿Cómo hago que el toque se comporte más como el mouse?
Esto está en Chrome 99 en Linux Ubuntu.
La respuesta está aquí, llame a releasePointerCapture si el objetivo ha capturado el puntero.
div.addEventListener('pointerdown', function(e) { if (e.target.hasPointerCapture(e.pointerId)) { e.target.releasePointerCapture(e.pointerId); } }Entonces el tacto se comporta como el ratón.