Как я могу определить в javascript, если пользователь прокручивает?
javascript
user1365010
источник
источник
if(scolling)
. Тоif(window.onscroll)
же самое?scrolling
вonscroll
. (пс: нет, это не то же самое)Ответы:
это работает:
window.onscroll = function (e) { // called when the window is scrolled. }
редактировать:
вы сказали, что это функция в TimeInterval ..
Попробуйте сделать это так:
userHasScrolled = false; window.onscroll = function (e) { userHasScrolled = true; }
затем внутри вашего интервала вставьте это:
if(userHasScrolled) { //do your code here userHasScrolled = false; }
источник
Вы только что указали javascript в своих тегах, так что сообщение @Wampie Driessen может вам помочь.
Я также хочу внести свой вклад, поэтому вы можете использовать следующее при использовании jQuery, если вам это нужно.
//Firefox $('#elem').bind('DOMMouseScroll', function(e){ if(e.detail > 0) { //scroll down console.log('Down'); }else { //scroll up console.log('Up'); } //prevent page fom scrolling return false; }); //IE, Opera, Safari $('#elem').bind('mousewheel', function(e){ if(e.wheelDelta< 0) { //scroll down console.log('Down'); }else { //scroll up console.log('Up'); } //prevent page fom scrolling return false; });
Другой пример:
$(function(){ var _top = $(window).scrollTop(); var _direction; $(window).scroll(function(){ var _cur_top = $(window).scrollTop(); if(_top < _cur_top) { _direction = 'down'; } else { _direction = 'up'; } _top = _cur_top; console.log(_direction); }); });
источник
$('#elem').bind('scroll'
не достаточно хорошо? РЕДАКТИРОВАТЬ: Неважно, я видел ваш второй пример.e.originalEvent.wheelDelta || e.originalEvent.detail
?wheel
событием.window.addEventListener("scroll",function(){ window.lastScrollTime = new Date().getTime() }); function is_scrolling() { return window.lastScrollTime && new Date().getTime() < window.lastScrollTime + 500 }
Измените 500 на количество миллисекунд после последнего события прокрутки, когда вы считаете, что пользователь «больше не прокручивает».
(
addEventListener
лучше, чемonScroll
потому, что первый может хорошо сосуществовать с любым другим используемым кодомonScroll
.)источник
Используйте интервал для проверки
Вы можете установить интервал, чтобы проверять, прокрутил ли пользователь, а затем сделайте что-нибудь соответственно.
Позаимствовано у великого Джона Ресига в его статье .
Пример:
let didScroll = false; window.onscroll = () => didScroll = true; setInterval(() => { if ( didScroll ) { didScroll = false; console.log('Someone scrolled me!') } }, 250);
Посмотреть живой пример
источник