Я ищу что-то на этот счет:
$(window).scroll(function(event){
if (/* magic code*/ ){
// upscroll code
} else {
// downscroll code
}
});
Любые идеи?
javascript
jquery
Zach
источник
источник
wheel
событие в эти дни: stackoverflow.com/a/33334461/3168107 .Ответы:
Проверьте текущий
scrollTop
против предыдущегоscrollTop
источник
lastScrollTop
0 или будете правильно инициализированы?var lastScrollTop = $(window).scrollTop()
после обновления браузером позиции прокрутки при загрузке страницы.Вы можете сделать это, не отслеживая предыдущую вершину прокрутки, поскольку все остальные примеры требуют:
Я не эксперт по этому вопросу, поэтому не стесняйтесь исследовать его дальше, но кажется, что когда вы используете
$(element).scroll
, прослушиваемое событие является событием прокрутки.Но если вы специально прослушиваете
mousewheel
событие с помощью bind,originalEvent
атрибут параметра события вашего обратного вызова содержит другую информацию. Часть этой информацииwheelDelta
. Если оно положительное, вы переместили колесико мыши вверх. Если оно отрицательное, вы переместили колесо мыши вниз.Я предполагаю, что
mousewheel
события будут срабатывать, когда колесо мыши поворачивается, даже если страница не прокручивается; случай, когда события «прокрутки», вероятно, не запускаются. Если вы хотите, вы можете позвонитьevent.preventDefault()
в нижней части вашего обратного вызова, чтобы предотвратить прокрутку страницы, и чтобы вы могли использовать событие mousewheel для чего-то другого, кроме прокрутки страницы, например, для некоторого типа функции масштабирования.источник
scrollTop
не обновлялась. На самом деле,$(window).scroll()
не стреляли вообще.Сохраните предыдущее местоположение прокрутки, а затем посмотрите, больше или меньше новое.
Вот способ избежать любых глобальных переменных ( здесь доступна скрипка ):
источник
Существующее решение
Там может быть 3 решения из этой публикации и другой ответ .
Решение 1
Решение 2
Решение 3
Multi Browser Test
Я не мог проверить это на Safari
хром 42 (Win 7)
Firefox 37 (победа 7)
IE 11 (Win 8)
IE 10 (Win 7)
IE 9 (Win 7)
IE 8 (Win 7)
Комбинированное решение
Из мультибраузерного теста я решил использовать Решение 3 для обычных браузеров и Решение 1 для Firefox и IE 11.
Я передал этот ответ, чтобы обнаружить IE 11.
источник
Safari browser
, было бы полезно дополнить решение.Я понимаю, что уже был принят ответ, но хотел опубликовать то, что я использую, на случай, если это может кому-нибудь помочь. Я получаю направление как
cliphex
с событием mousewheel, но с поддержкой Firefox. Это полезно делать таким образом, если вы делаете что-то вроде блокировки прокрутки и не можете получить текущую вершину прокрутки.Смотрите живую версию здесь .
источник
Событие прокрутки
В событии прокрутки ведет себя странно в FF (он вызывается много раз из - за гладкости прокрутки) , но она работает.
Примечание: прокрутки событие на самом деле вызывается при перемещении полосы прокрутки, с помощью клавиш управления курсором или колесика мыши.
Wheel Event
Вы также можете взглянуть на MDN, он предоставляет отличную информацию о Wheel Event .
Примечание. Событие wheel вызывается только при использовании колесика мыши. ; клавиши курсора и перетаскивание полосы прокрутки не запускают событие.
Я прочитал документ и пример: прослушивая это событие через браузер,
и после некоторых тестов с FF, IE, chrome, safari я получил следующий фрагмент:
источник
В случае, если вы просто хотите узнать, прокручиваете ли вы вверх или вниз с помощью указателя (мыши или трекпада ), вы можете использовать свойство deltaY
wheel
события.источник
или используйте расширение колесика мыши , см. здесь .
источник
Я видел много вариантов хороших ответов здесь, но, похоже, у некоторых людей возникают проблемы с кроссбраузерностью, так что это мое решение.
Я успешно использовал это для определения направления в FF, IE и Chrome ... Я не проверял его в сафари, так как обычно использую окна.
Имейте в виду, я также использую это, чтобы остановить прокрутку, поэтому, если вы хотите, чтобы прокрутка все еще происходила, вы должны удалить
e.preventDefault(); e.stopPropagation();
источник
Чтобы игнорировать любой момент / импульс / отскок вверху и внизу страницы, вот модифицированная версия принятого ответа Иосии :
источник
Вы можете определить направление мышиных раковин.
источник
Используйте это, чтобы найти направление прокрутки. Это только для определения направления вертикальной прокрутки. Поддерживает все кросс-браузеры.
пример
источник
этот код прекрасно работает с IE, Firefox, Opera и Chrome:
'wheel mousewheel' и свойство deltaY должны использоваться в функции bind () .
Помните: ваш пользователь должен обновить свою систему и браузеры из соображений безопасности. В 2018 году оправдание «у меня IE 7» - это чепуха. Мы должны обучать пользователей.
Хорошего дня :)
источник
Держите это супер просто:
Способ прослушивания событий jQuery:
Vanilla JavaScript Event Listener Путь:
Функция остается прежней:
Я написал более углубленный пост на этом здесь
источник
Вы можете использовать опции прокрутки и колесика мыши для одновременного отслеживания движения вверх и вниз.
Вы также можете заменить «тело» на (окно).
источник
Запишите приращение
.data ()
прокручиваемого элемента, и вы сможете проверить, сколько раз прокрутка достигла вершины.источник
Почему никто не использует
event
объект, возвращаемый приjQuery
прокрутке?Я использую
chromium
и не проверял в других браузерах, есть ли у нихdir
свойство.источник
Поскольку
bind
версия v3 устарела («замененаon
») иwheel
теперь поддерживается , забудьтеwheelDelta
:wheel
мероприятия Совместимость браузера на MDN - х (2019-03-18) :источник
if(e.originalEvent.deltaY > 0) { console.log('down'); } else if(e.originalEvent.deltaY < 0) { console.log('up'); } else if(e.originalEvent.deltaX > 0) { console.log('right'); } else if(e.originalEvent.deltaX < 0) { console.log('left'); }
touchmove
события вместо.Вы также можете использовать это
источник
в
.data()
элементе вы можете сохранить JSON и проверить значения для запуска событийисточник
Это простое и легкое обнаружение того, когда пользователь прокручивает страницу сверху и когда он возвращается наверх.
источник
Это оптимальное решение для определения направления именно тогда, когда пользователь заканчивает прокрутку.
источник
Вы должны попробовать это
источник
У меня были проблемы с упругой прокруткой (отскок прокрутки, резиновое соединение). Игнорирование события прокрутки вниз, если оно близко к верхней части страницы, сработало для меня.
источник
Это работает во всех браузерах ПК или телефонов, расширяя список ответов. Можно построить более сложное окно объекта события ["scroll_evt"], а затем вызвать его в функции handleScroll (). Это срабатывает для 2 одновременных условий, если определенная задержка истекла или определенная дельта пропущена, чтобы устранить некоторые нежелательные триггеры.
источник