Как отменить последующий вызов функции в течении 1 секунды

На сайте test.cuberto.ru/libris/index.html осуществляю нестандартную прокрутку мыши. Но возникла проблема. Функция прокрутки вызывается на сенсорных мышах повторно в зависимости от того на сколько сильно прокрутить "колёсико". Единственный выход что нашла так это в течении 1 секунды запрещать повторный вызов функции, но не знаю как это прописать.
Вот кусок кода где вызывается прокрутка.

function handle(delta) {
if (delta < 0){
sliderTop();
flagAnim = true;
}
else {
sliderBottom();
flagAnim = true;
}
}

/** Обработчик событий колесика мышки */
//обработчик onWheel;
function onWheel(e) {//разделить верх и низ?
e = e || window.event;
var delta = e.deltaY || e.detail || -e.wheelDelta;
if(!flagAnim){
handle(delta);
console.log(delta)
}
}

Как запретить повторный вызов delta или удалить функции delta которые происходят сразу же после окончания предыдущей в течении секунды
  • Вопрос задан
  • 4452 просмотра
Решения вопроса 1
var lastCall = 0;
function handle() {
  var now = Date.now();
  if(now - lastCall > 1e3){
    // логика ...
    lastCall = now;
  }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
При установки событий, которые могут быть отменены нужно использовать bind с дополнительным параметром пространства имён, который можно использовать для отмены через unbind.
Других корректных способов нет.
Ответ написан
Комментировать
trueClearThinker
@trueClearThinker
underscorejs.org/#debounce — вызывает функцию не чаще определенного количества времени
Ответ написан
iiil
@iiil
Инженер и вэб-дизайнер, рисую.
Не по теме, примите как совет:
1. После того, как пользуюсь навигацией - скролл перестает работать вообще (в mozilla 28)
2. Очень сильно бесит: начинаю скроллить, моментальный переход на второй слайд - ок. Я не прекращая скроллю (уверяю Вас, большинство пользователей сразу скроллят сайт и только потом идут изучать что-то) - но нет, скроллить не дает, только спустя паузу снова можно сменить слайд

Эти два пункта необходимо исправить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы