Experimental fix attempt in Board.vue (bad behavior on smartphones)
[vchess.git] / client / src / components / Board.vue
index 377013a..0c12620 100644 (file)
@@ -75,8 +75,6 @@ export default {
               'class': { 'choice-piece': true },
               on: {
                 "click": e => { this.play(m); this.choices=[]; },
-                // NOTE: add 'touchstart' event to fix a problem on smartphones
-                "touchstart": e => { this.play(m); this.choices=[]; },
               },
             })
           ]
@@ -246,19 +244,31 @@ export default {
       );
       elementArray.push(reserves);
     }
-    return h(
-      'div',
-      {
-        // NOTE: click = mousedown + mouseup
+    let onEvents = {};
+    // NOTE: click = mousedown + mouseup
+    if ('ontouchstart' in window)
+    {
+      onEvents = {
         on: {
-          mousedown: this.mousedown,
-          mousemove: this.mousemove,
-          mouseup: this.mouseup,
           touchstart: this.mousedown,
           touchmove: this.mousemove,
           touchend: this.mouseup,
         },
-      },
+      };
+    }
+    else
+    {
+      onEvents = {
+        on: {
+          mousedown: this.mousedown,
+          mousemove: this.mousemove,
+          mouseup: this.mouseup,
+        },
+      };
+    }
+    return h(
+      'div',
+      onEvents,
       elementArray
     );
   },