Нажмите (не выпускать) или нажмите событие в JavaScript? - PullRequest
0 голосов
/ 03 июня 2019

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

Есть ли событие, которое либо коснется (не отпустит), либо нажмете прослушивание?

P.S. Этот вопрос ( пользовательское событие касания JavaScript ) касается jquery.

1 Ответ

0 голосов
/ 03 июня 2019

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

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

Ниже приведен простой код, позволяющий избежать этой проблемы:

function onTapOrClick(element, cb) {
    let debounce;  // temporarily disables on click events when touchstarts happen
    element.addEventListener("touchstart", (event) => {
        if (debounce) { clearTimeout(debounce); }
        debounce = setTimeout(() => debounce = undefined, 1000);  // debounce is 1000ms, could easily be longer
        cb(event);
    });
    element.addEventListener("click", (event) => {
        if (debounce) { return; }
        cb(event);
    });     
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...