Comment déclencher une requête ajax en stop de défilement?

Sur le défilement de la fenêtre, je fais une demande comme celle-ci

$(window).scroll(function(){ //doing ajax request }); 

mais il crée plusieurs requêtes ajax pour l’événement scroll. Existe-t-il un événement comme onscrollstop ou quelque chose qui ne se déclenche qu’après le défilement de la fenêtre? Ou y a-t-il un autre moyen de gérer le même scénario? Veuillez suggérer.

Je ne crois pas qu’il existe un auditeur onscrollstop, mais vous pouvez l’imiter en définissant un délai d’expiration et en le désactivant si le défilement continue.

 var timeout = null; $(window).scroll(function() { clearTimeout(timeout); timeout = setTimeout(function() { // do your ajax request }, 100); }); 

Vous devez attendre une courte période et ne déclencher la demande que si aucun événement de défilement ne se produit.

 var timer, // store a timeout reference pendingAjax, // store the last AJAX request scrollHandler = function() { pendingAjax.abort(); // cancel the last request if it's still running pendingAjax = $.ajax({...}); // start a new AJAX request }; $(window).scroll(function() { // whenever the window is scrolled clearTimeout(timer); // cancel the existing timer timer = setTimeout(scrollHandler, 300); // and start a new one }); 

Cette question offre une solution.

Une autre façon de procéder, plutôt qu’un minuteur, consiste simplement à définir un indicateur indiquant qu’une demande ajax est déjà en cours d’exécution et à ne rien faire tant que l’indicateur n’a pas été effacé par la demande initiale. Vous pouvez également définir une timer après la suppression de l’indicateur, si vous souhaitez que les requêtes ajax ne se produisent pas plus souvent qu’une fréquence arbitraire (par exemple, pas plus souvent que toutes les 5 secondes).