Как понять, использует ли пользователь пользовательский скроллер или мышь для прокрутки

Я реализовал пользовательский скроллер, как вы можете видеть здесь. Для моего скроллера я использовал ScrollTo. Проблема в том, что мне нужно понять, когда пользователь использует мой пользовательский скроллер и когда он использует мышь или другие способы прокрутки, например клавиатуру. Я попробовал это:

$(window).scroll(function(){

});

но и мой пользовательский скроллер вызывает это. Вот структура моей страницы:

<div class="page">

   <div id="scroller" class="news-scroller">
     <div ><span id="up"></span></div>
     <div ><span id="down"></span></div>
   </div>

   <div class="news">
   </div>
   <div class="news">
   </div>
   ....

и вот код для моего пользовательского скроллера:

var current = $(".news").eq(0);

$("#down").click(function(){
   if(current.next().size() > 0)
   {
      current = current.next();
      $.scrollTo("#"+current.attr("id"), 800);     

   }
   else  if(current.next().size() <= 0)
   {
    return
   }
});

$("#up").click(function(){
   if(current.prev().size() > 0)
   {
      current=current.prev();
      $.scrollTo("#"+current.attr("id"), 800);
   }
   else  if(current.prev().size() <= 0)
   {
      return;
   }
});

1 ответ

Решение

Так как это могут искать другие люди, вот вывод: $(window).scroll() происходит с любым событием прокрутки, которое происходит независимо от того, происходит ли это с помощью мыши или клавиатуры или любого вида прокрутки. Единственный способ как-то отличить их друг от друга - это найти шаблон в пользовательском скроллере (например, мой скроллер прокручивал определенное расстояние за определенное время), что не было бы очень точным решением.

Решение, которое я попробовал, состояло в том, чтобы вызвать пользовательское событие в моем пользовательском скроллере, чтобы я мог понять, когда пользователь использует мой пользовательский скроллер, а когда нет.

Другие вопросы по тегам