event.preventDefault () останавливая весь JavaScript в Chrome на Android - PullRequest
0 голосов
/ 07 октября 2019

у меня есть следующие прослушиватели событий, определенные в vanilla js

link.addEventListener("touchstart", function (event) {
   event.preventDefault();
});

link.addEventListener("touchend", function (event) {
  event.preventDefault();
});

link.addEventListener("click", function (event) {
   event.preventDefault();
});

Событие, которое предотвращается, является загрузкой страницы (целевые элементы являются тегами)

В другом месте (в другом JSфайл), есть код, который делает раскрывающийся список при щелчке по целевым элементам.

Это прекрасно работает во многих других браузерах (chrome pc и mac, firefox pc, safari mac, edge, IE 11, iphone safari, ipad safari)

, но Chrome на Android ведет себя по-другому

, когда эти операторы protectDefault в раскрывающемся меню не отображаются при нажатии на ссылки.

Я проверял этозакомментировав warnDefaults и появившиеся выпадающие списки.

chrome dev tools показывает, что первым protectDefault является тот, который запускается, когда они не закомментированы.

что может быть причиной этого?

1 Ответ

0 голосов
/ 19 октября 2019

Это потому, что сенсорный запуск предотвращает событие нажатия. Вы можете запретить сенсорное перемещение, чтобы предотвратить ссылки. См. Связанный вопрос - Почему событие onclick подавлено, когда для события touchstart вызывается protectDefault ()?

...