Используя touchstart и / или щелкните (mousedown) Angular 6

Проблема:

У меня проблема, когда во всем приложении используется событие щелчка. Приложение будет использоваться как на мобильных устройствах, так и в Интернете. Я использую Angular 6.

Каждый раз, когда вы нажимаете кнопку или ссылку в браузере на моем рабочем столе, он срабатывает при первом щелчке, но на мобильных устройствах щелчок иногда не работает. поправьте меня, если я ошибаюсь, но я считаю, что люди называют это призрачным щелчком.

Я думал, что это задержка в 300 мс, но я попытался использовать кран hammerjs и вместо этого попробовал fastclick, и, похоже, это не проблема.

Я пробовал использовать touchstart в html вместо щелчка / касания и, похоже, избавился от проблемы.

Есть ли способ связать mousedown и touchstart друг с другом? есть ли способ использовать просто щелчок / мышку на рабочем столе и сенсорный запуск на мобильном телефоне?
Как еще я могу это исправить?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
0
10 575
3

Ответы 3

Если вы используете Angular 6, по умолчанию он внутренне использует библиотеку hammerjs для обработки событий жестов касания. Также он удаляет задержку в 300 мс для двойного нажатия. Вот URL-адрес, который объясняет больше о Touch Gesture в Angular. https://blog.angularindepth.com/gestures-in-an-angular-application-dde71804c0d0

Я ценю ответ. В настоящее время я использую тап в hammerjs, и это, похоже, не исправляет медленный отклик кнопки на мобильном телефоне, и иногда вам нужно дважды нажать его, чтобы он зарегистрировался.

Seth 04.09.2018 21:41

вы должны использовать (щелкнуть), который будет работать как для настольных компьютеров, так и для мобильных

Suresh Kumar Ariya 04.09.2018 21:46

(щелкните) и (коснитесь), похоже, работают одинаково, почти все приложение создается с помощью (щелкните), но проблема в том, что (щелчок) кажется медленнее и тоже не отвечает. (touchstart) - единственный, который, кажется, быстро реагирует, но мне нужно, чтобы он работал и на рабочем столе.

Seth 04.09.2018 21:52

вы используете ионный?

Suresh Kumar Ariya 04.09.2018 22:14

Я не использую ионный

Seth 04.09.2018 22:15

@Seth вы устранили проблему ... мы также сталкиваемся с той же проблемой.

Sathish Kotha 23.07.2020 19:53

Попробуйте в своем шаблоне:

<div
  (touchmove) = "touchMoving($event)"
  (touchstart) = "touchStart($event)"
  (touchend) = "touchEnd($event)"
>

В вашем компоненте теперь вы можете использовать данные $ event:

touchMoving($event) {
  console.info($event);
}

Я обнаружил, что вы должны ВСЕГДА использовать (mousedown) вместо (щелкать) для кнопок в Angular, если это мобильное приложение. При щелчке событие иногда не регистрируется из-за проблем с DOM. Для лучшей производительности просто используйте mousedown.

Другие вопросы по теме