¿Cómo puedo detectar en javascript si el usuario se desplaza?
javascript
usuario1365010
fuente
fuente
if(scolling)
. Esif(window.onscroll)
lo mismo?scrolling
en elonscroll
. (PD: no, eso no es lo mismo)Respuestas:
esto funciona:
window.onscroll = function (e) { // called when the window is scrolled. }
editar:
dijiste que esta es una función en un TimeInterval ..
Intenta hacerlo así:
userHasScrolled = false; window.onscroll = function (e) { userHasScrolled = true; }
luego, dentro de su intervalo, inserte esto:
if(userHasScrolled) { //do your code here userHasScrolled = false; }
fuente
Acabas de decir javascript en tus etiquetas, por lo que la publicación de @Wampie Driessen podría ayudarte.
También quiero contribuir, por lo que puede usar lo siguiente cuando use jQuery si lo necesita.
//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; });
Otro ejemplo:
$(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); }); });
fuente
$('#elem').bind('scroll'
No es lo suficientemente bueno? EDITAR: No importa, vi tu segundo ejemplo.e.originalEvent.wheelDelta || e.originalEvent.detail
?wheel
evento.window.addEventListener("scroll",function(){ window.lastScrollTime = new Date().getTime() }); function is_scrolling() { return window.lastScrollTime && new Date().getTime() < window.lastScrollTime + 500 }
Cambie 500 a la cantidad de milisegundos después del último evento de desplazamiento en el que considera que el usuario "ya no se desplaza".
(
addEventListener
es mejor queonScroll
porque el primero puede coexistir muy bien con cualquier otro código que se useonScroll
).fuente
Use un intervalo para verificar
Puede configurar un intervalo para seguir comprobando si el usuario se ha desplazado y luego hacer algo en consecuencia.
Tomando prestado del gran John Resig en su artículo .
Ejemplo:
let didScroll = false; window.onscroll = () => didScroll = true; setInterval(() => { if ( didScroll ) { didScroll = false; console.log('Someone scrolled me!') } }, 250);
Ver ejemplo en vivo
fuente