@seredaes

Как узнать, что прокрутка остановилась?

При прокрутке страницы срабатывают различные скрипты типа mouseover и т.д., в результате притормаживает прокрутка.
Я бы хотел определять, что идёт прокрутка и смог бы отключить обработку, а когда прокрутка остановлена, запускать все скрипты...

Вот так могу определить что идёт прокрутка:
$(function(){
$("body").mousewheel(function(event, delta) {
console.log("Прокрпутка... " + delta);
});
});
А вот остановку...не знаю как отследить :(
  • Вопрос задан
  • 3202 просмотра
Решения вопроса 1
@GreatRash
var timer = null;

$(window).on('scroll', function() {
  clearTimeout(timer);
  
  timer = setTimeout(function() {
    alert('прокрутка прекратилась');
  }, 100);
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sim3x
@sim3x
Логика: активировать событие, после того как юзер не использует скролл 250 мс

stackoverflow.com/a/14035162
$.fn.scrollStopped = function(callback) {
    var $this = $(this), self = this;
    $this.scroll(function(){
        if ($this.data('scrollTimeout')) {
          clearTimeout($this.data('scrollTimeout'));
        }
        $this.data('scrollTimeout', setTimeout(callback,250,self));
    });
};
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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