2017-02-08 11 views
1

У меня возникла проблема, когда событие на элементе Link (тег) или любом другом DOM-элементе не вызывает функцию обработчика/обратного вызова.Chrome 56 mobile addEventListener «click» не работает

Не важно, какой из родителей в иерархии я получаю, чтобы это не получало это событие.

нет Event.stopImmediatePropagation или Event.stopPropagation есть.

ответ

1

причина, по которой Chrome 56, они меняют некоторые события и прекращают трансформировать события мыши в события Touch.

посмотреть здесь: 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 
} 

теперь, чтобы иметь симулировать щелчком мыши вы должны проверить 300мс проход между «touchstart» и «touchend». если это меньше, у вас есть клик.

Примечание: «щелчок» событие происходит после того, как «touchstart»

+1

Хороший улов, рекомендую использовать самостоятельно или с помощью https://github.com/ftlabs/fastclick/blob/master/lib/fastclick.js – Meschiany

Смежные вопросы