I understand that this is an old post, but since the described problem still exists, I will provide my solution:
I do not have a laptop with a touch screen, so I myself did not experience a problem - but I had to repeat it if I decided to solve it. So, I went into chrome://flags/#touch-events and set Enable touch events to Enabled .
I rebooted Chrome, opened the developer console and pressed ⌘ + ⇧ + M to open the device mode window (it seems that this last part is not absolutely necessary).
Now I was able to reproduce the problem - listeners for click events never fire.
In researching the problem, I came across a library - Tocca.js . Its description reads:
Super lightweight script (1kb) for detection through Javascript events like 'tap' 'dbltap' 'swipeup' 'swipedown' 'swipeleft' 'swiperight' on any device.
To find out which event, if any, is triggered, I bound all the event handlers that Tocca.js provides to the element that detects the problematic behavior:
var $elm=$('.log-in').last() $elm.on('tap',function(e,data){ console.log(e,data); }); $elm.on('dbltap',function(e,data){ console.log(e,data); }); $elm.on('longtap',function(e,data){ console.log(e,data); }); $elm.on('swipeleft',function(e,data){ console.log(e,data); }); $elm.on('swiperight',function(e,data){ console.log(e,data); }); $elm.on('swipeup',function(e,data){ console.log(e,data); }); $elm.on('swipedown',function(e,data){ console.log(e,data); });
Then I pressed the button - and - eureka - console output!
r.Event {type: "tap", originalEvent: TouchEvent, timeStamp: 1471550288951, jQuery310022933444763555788: true, isTrigger: 3…} Object {x: 897.4290161132812, y: 264.85699462890625, distance: undefined}
Tocca.js caught an event in a tap event listener. As it turned out, problematic behavior can be resolved by including Tocca.js in your page and adding a tap event to any event listener that listens for click . To be safe, I added two other Tocca.js "tap-like" events:
$('.log-in').on('click tap dbltap longtap', function(e) { console.log("HAIL SATAN!"); })
While I am satisfied with the use of Tocca.js and have no reason to dig further, it would be rather trivial to determine the original emitted event by inserting some debug statements into Tocca.js.
So now you know, and knowledge is half the battle.