Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   $(window).scroll() (https://javascript.ru/forum/jquery/31347-%24-window-scroll.html)

LittlePony 04.09.2012 16:25

$(window).scroll()
 
Как можно отслеживать, произошла ли прокрутка страницы по инициативе пользователя (колёсиком мыши) или из скрипта?

Задача вот в чём: на прокрутку страницы навешано множество обработчиков, в том числе и прокрутка скриптом к нужному якорю ( $("html,body").animate({scrollTop:$target.offset() .top}) ), и нужно, чтобы они срабатывали только в том случае, если пользователь прокрутил колёсико мыши. Если работает .animate({scrollTop:…}), то не нужно делать ничего.

yura_remnev 05.09.2012 16:06

Как Вам такой вариант:
- создаете глобальный флаг (или свойство глобального объекта или глобальную переменную), например isAnimate = false
- перед запуском .animate({scrollTop:…}) ставите значение isAnimate = true, после завершения работы анимации — isAnimate = false
- при вызове обработчиков скрола проверяете флаг isAnimate, если его значение true — не выполняете код, которые необходим для прокрутки колесиком

LittlePony 06.09.2012 12:58

yura_remnev, спасибо, звучит разумно. Надо будет попробовать.


Часовой пояс GMT +3, время: 01:05.