Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.09.2012, 16:25
Аватар для LittlePony
Кандидат Javascript-наук
Отправить личное сообщение для LittlePony Посмотреть профиль Найти все сообщения от LittlePony
 
Регистрация: 19.08.2012
Сообщений: 100

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

Задача вот в чём: на прокрутку страницы навешано множество обработчиков, в том числе и прокрутка скриптом к нужному якорю ( $("html,body").animate({scrollTop:$target.offset() .top}) ), и нужно, чтобы они срабатывали только в том случае, если пользователь прокрутил колёсико мыши. Если работает .animate({scrollTop:…}), то не нужно делать ничего.
Ответить с цитированием
  #2 (permalink)  
Старый 05.09.2012, 16:06
Интересующийся
Отправить личное сообщение для yura_remnev Посмотреть профиль Найти все сообщения от yura_remnev
 
Регистрация: 01.07.2011
Сообщений: 9

Как Вам такой вариант:
- создаете глобальный флаг (или свойство глобального объекта или глобальную переменную), например isAnimate = false
- перед запуском .animate({scrollTop:…}) ставите значение isAnimate = true, после завершения работы анимации — isAnimate = false
- при вызове обработчиков скрола проверяете флаг isAnimate, если его значение true — не выполняете код, которые необходим для прокрутки колесиком
Ответить с цитированием
  #3 (permalink)  
Старый 06.09.2012, 12:58
Аватар для LittlePony
Кандидат Javascript-наук
Отправить личное сообщение для LittlePony Посмотреть профиль Найти все сообщения от LittlePony
 
Регистрация: 19.08.2012
Сообщений: 100

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск