Chrome 56移动addEventListener“点击”无法正常工作

时间:2017-02-08 20:47:24

标签: google-chrome events mobile click touch

我遇到链接元素(A标记)或任何其他DOM元素上的click事件未调用处理程序/回调函数的问题。

层次结构中的哪个父级我无法获得此事件无关紧要。

不存在Event.stopImmediatePropagation或Event.stopPropagation。

1 个答案:

答案 0 :(得分:1)

原因是Chrome 56,它们会更改某些事件并停止将鼠标事件转换为触摸事件。

见这里:https://developers.google.com/web/updates/2016/12/chrome-56-deprecations#mouse_on_android_stops_firing_touchevents

要解决此问题,请在之前使用touchstart的移动设备中使用click事件。或者如果您只需要一个click,您可以这样做:

Element.addEventListener("click", callback);
Element.addEventListener("touchstart", callback);
function callback(event) {
  Element.removeEventListener("click", callback);
  Element.removeEventListener("touchstart", callback);
  // do something
}

现在,要进行模拟点击,您需要检查" touchstart"之间的300毫秒传递。和" touchend"。如果它少了你点击。

注意:"点击"事件发生在" touchstart"

之后