¿Por qué se suprimió el evento onclick cuando se invoca preventDefault () para el evento touchstart?

Trato de implementar algunas funciones javascript para mi dispositivo Ipad. Me gustaría utilizar alguna acción de deslizar y hacer clic en acción en mi div de canvas.

Implementé la function de deslizamiento horizontal y vertical. Debo usar preventDefault en el evento touchstart para evitar el desplazamiento de página completa al deslizar. Funcionó bien, pero después de esto noté que deshabilitaba cada evento de clic en este div. Cuando se elimina el preventDefault, el evento de clic funciona de nuevo.

¿Hay alguna solución para resolver este problema?

dojo.connect(this.node, "ontouchstart", this, "touchstart"); ... touchstart: function(e){ this.touch = dojo.clone(e.changedTouches[0]); e.preventDefault(); } 

this.node = document.getElementById ('aa');

 <div id="aa" style="width: 600px; height: 400px;"> <div onclick="alert('asd');" style="width: 100px; height: 100px; background-color: #ff0000; margin: auto;"> </div> </div> 

Puede intentar evitar la acción pnetworkingeterminada del evento touchmove.

Sé que Prusse ya respondió esta pregunta correctamente, pero carece de la confianza que busco en una respuesta. La razón por la que el evento de clic suprimido por preventDefault () en el inicio de session es porque se suprimirá cualquier evento conectado y el siguiente inicio de session táctil. La solución es agregar preventDefault () al evento touchmove en su lugar.

Esto se explica con más detalle en la documentation de Mozilla en Manejo de clics :

Dado que llamar a preventDefault () en un inicio de session táctil o al primer evento touchmove de una serie evita que los events del mouse correspondientes se activen, es común llamar a preventDefault () en touchmove en lugar de inicio de toque. De esa forma, los events del mouse pueden dispararse y las cosas como enlaces seguirán funcionando.