Pregunta

No importa qué método utilice para detectar desplazamiento en la página El evento se activa dos veces.Consulte el código para los diferentes métodos que he probado.

<body onmousewheel="alert('Why are you alerting twice?')">

o

<script src="js/jquery-1.8.3.min.js"></script>
<script>
$(window).scroll(function(){
    alert("Why are you alerting twice?");
});
</script>

o

window.onscroll = please_scroll;

function please_scroll() {
      alert("Why are you alerting twice?");
    }

Incluso he intentado usar $ .Debounce.

En caso de que sea de cualquier uso, le explicaré lo que estoy tratando de hacer: Cuando el usuario desplaza hacia arriba hacia arriba o hacia abajo, la página animará el desplazamiento al siguiente contenido de ancho completo DIV.Tengo código que está haciendo con éxito esto en la opción de mi menú, pero también me gustaría que sucediera a medida que el usuario se desplaza, esencialmente automáticamente, ayudándolos con desplazamiento a cada parte de mi página.Esta es la función que actualmente tengo para desplazarse:

function scrollTo(id){
  // Scroll
  $('html,body').animate({scrollTop: $("#"+id).offset().top - 110},'slow',function(){
    animation_active = "false";
  });
}

¿Fue útil?

Solución

Muchos dispositivos pueden desencadenar eventos de desplazamiento que parecen suceder una vez más a menudo.Simplemente use un tiempo de espera para eso:

var timeout;

$(window).scroll(function() {
    clearTimeout(timeout);  
    timeout = setTimeout(function() {
        // do your stuff
    }, 50);
});

Puede jugar con el valor 50, recomiendo algo entre 50 y 150.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top