janela.seleccione os eventos que acionam duas vezes
-
21-12-2019 - |
Pergunta
Não importa o método que eu uso para detectar o deslocamento na página do evento é acionado duas vezes.Por favor, veja o código para os métodos diferentes que eu tentei.
<body onmousewheel="alert('Why are you alerting twice?')">
ou
<script src="js/jquery-1.8.3.min.js"></script>
<script>
$(window).scroll(function(){
alert("Why are you alerting twice?");
});
</script>
ou
window.onscroll = please_scroll;
function please_scroll() {
alert("Why are you alerting twice?");
}
Eu até tentei usando $.debounce.
Em caso de qualquer utilização vou explicar o que eu estou tentando fazer:Quando o usuário rola a roda para cima ou para baixo, a página vai animar o deslocamento para o próximo largura de conteúdo da div.Eu tenho um código que é sucesso fazendo isso onclick do meu cardápio, mas eu também gostaria que isso aconteça conforme o usuário navega, essencialmente automático, auxiliando-as com a barra de rolagem para cada parte da minha página.Esta é a função que tem atualmente para o deslocamento:
function scrollTo(id){
// Scroll
$('html,body').animate({scrollTop: $("#"+id).offset().top - 110},'slow',function(){
animation_active = "false";
});
}
Solução
muitos dispositivos podem disparar eventos de deslocamento que parece acontecer uma vez mais frequentemente.basta utilizar um limite de tempo para que:
var timeout;
$(window).scroll(function() {
clearTimeout(timeout);
timeout = setTimeout(function() {
// do your stuff
}, 50);
});
você pode jogar com o valor de 50, eu recomendo algo entre 50 e 150.