Задать вопрос

Как отменить последующий вызов функции в течении 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 которые происходят сразу же после окончания предыдущей в течении секунды
  • Вопрос задан
  • 4885 просмотров
Подписаться 5 Оценить Комментировать
Решения вопроса 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. Очень сильно бесит: начинаю скроллить, моментальный переход на второй слайд - ок. Я не прекращая скроллю (уверяю Вас, большинство пользователей сразу скроллят сайт и только потом идут изучать что-то) - но нет, скроллить не дает, только спустя паузу снова можно сменить слайд

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

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

Похожие вопросы