Chrome 56 移动版 addEventListener“点击”不起作用

Nis*_*eph 2 mobile events google-chrome click touch

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

我得到层次结构中的哪个父级没有得到此事件并不重要。

不存在 Event.stopImmediatePropagation 或 Event.stopPropagation。

Nis*_*eph 5

原因是 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
}
Run Code Online (Sandbox Code Playgroud)

现在,要进行模拟点击,您需要检查“touchstart”和“touchend”之间的 300ms 传递时间。如果少了,你就可以点击一下。

注意:“click”事件发生在“touchstart”之后