Страницы

Поиск по вопросам

воскресенье, 12 января 2020 г.

wheel event и сенсорная мышь

#javascript #мышь


Столкнулась с проблемой при отлавливания события wheel при использовании сенсорной мыши.
Дело в том что у мыши с колёсиком wheel срабатывает при переключении порога (или
как там называется шаг прокрутки), а у мышей сенсорных всё куда печальнее.
Во первых для сенсорной мыши не обязательно держать палец на тачпаде чтобы она продолжала
скроллить, то есть если Вы сильно прокрутили пальцем на тацпаде то событие wheel будет
срабатывать ещё некоторое время (а то и секунд 7). Всё это сделано как Я понимаю для
смягчения скролла для удобного (пафосного) использовании сенсорных мышей.

Сразу скажу что у меня мышь майкрософта и что продолжительность срабатывания самого
события может варьироваться от самой мыши и от настроек компа (уже тестировали).

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

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

Может есть какое-то свойство что хранит данные которые помогут различить нормальный
wheel от псевдо wheel
    


Ответы

Ответ 1



На событие wheel повесить счетчик += Установить маркер, игнорирующий новые события wheel, пока длится текущее. Через определенный интервал проверять, изменилось ли значение счетчика. Если изменилось - wheel еще происходит, если осталось прежним - событие wheel завершено, убираем интервал и убираем маркер. Важно! Интервал должен быть небольшим, иначе в счетчик может попасть wheel из нового пользовательского события, а нас интересует только текущее. https://jsfiddle.net/rafaylik/sLjyyfox/ []

Комментариев нет:

Отправить комментарий