72 votes

plugin jquery infinite-scroll

J'essaie de mettre en place le défilement infini sur un site que je développe avec Coldfusion. Je suis novice en matière de javascript et de jquery et j'ai donc quelques difficultés à m'y retrouver. Dois-je avoir une pagination sur mon site afin d'utiliser le plugin infinite-scroll, ou y a-t-il un moyen de le faire sans cela ?

0 votes

@francis que voulez-vous dire par coûteux. Vous n'êtes pas obligé de tout lier au scroll. Cela dépend de ce que vous voulez faire. Il s'agit d'un exemple générique. scroll est supporté par plusieurs navigateurs.

1 votes

Essayez cet impressionnant défilement infini github.com/yairEO/infinite

0 votes

@vsync je ne te blâme pas mais ça semble un peu buggé quand tu fais défiler, pour moi quand je fais défiler ça saute de 20 à 40 ? Moz Firefox fyi

136voto

Hussein Points 23042

Vous n'avez pas besoin du plug-in infinite scroll pour cela. Pour détecter quand le scroll atteint la fin de la page, avec jQuery vous pouvez faire

$(window).scroll(function () { 
   if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) {
      //Add something at the end of the page
   }
});

Démo sur JsFiddle

2 votes

Pourquoi exactement la constante -10 ? Est-ce la taille des flèches de la barre de défilement ?

8 votes

@bruno Le défilement se produit lorsqu'il atteint 10px avant la fin de la page et pas nécessairement à la toute fin de la page. Il n'est pas nécessaire de l'avoir, mais il donne un plus grand contrôle pour définir à quel moment la page doit défiler.

3 votes

Est-il possible d'adopter un DIV fixe au lieu d'une page ?

26voto

Nick Points 2909

J'utilise la réponse d'Hussein avec des requêtes AJAX. J'ai modifié le code pour qu'il se déclenche à 300px au lieu de 10px, mais mes ajouts ont commencé à se multiplier avant que la requête AJAX ne soit terminée, car l'appel au défilement se déclenche beaucoup plus fréquemment dans une plage de 300px que dans une plage de 10px.

Pour résoudre ce problème, j'ai ajouté un déclencheur qui serait inversé lors d'un chargement AJAX réussi. Mon code ressemble plus à ceci :

var scrollLoad = true;

$(window).scroll(function () { 
  if (scrollLoad && $(window).scrollTop() >= $(document).height() - $(window).height() - 300) {
    scrollLoad = false;
    //Add something at the end of the page
  }
});

puis dans ma réponse AJAX, j'ai mis scrollLoad a true .

0 votes

J'ai également dû ajouter un code de pagination au mien pour compléter l'effet. Pas difficile, mais quelque chose à noter.

0 votes

J'ai utilisé cette méthode. Elle fonctionne bien. Merci. Mais à la fin de la page, un scintillement se produit. C'est le dernier enregistrement de la BD. Mais lorsque l'utilisateur essaie d'en charger plus, la page vacille. Comment surmonter cela ?

10voto

Hawkee Points 1341

Je me suis basé sur le petit exemple d'Hussein pour créer un widget jQuery. Il prend en charge localStorage pour enregistrer temporairement les résultats ajoutés et dispose d'une fonctionnalité de pause pour arrêter l'ajout de temps en temps, en demandant un clic pour continuer.

Essayez-le :

http://www.hawkee.com/snippet/9445/

1 votes

Un lien n'est pas suffisant. Veuillez copier/coller votre article ici.

4voto

user174012 Points 11

Si vous avez une référence, comme votre pied de page, vous pouvez utiliser ce code, disons que vous avez un div de pied de page avec l'id #footer :

function element_in_scroll(elem) { var docViewTop = $(window).scrollTop(); var docViewBottom = docViewTop + $(window).height();

`var elemTop = $(elem).offset().top; var elemBottom = elemTop + $(elem).height();

    return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}

$(document).scroll(function(e){
    if (element_in_scroll("#footer")) {
        //Here you must do what you need to achieve the infinite scroll effect...
    };
});` 

Si vous voulez plus d'informations, consultez ce manuel sur la façon de créer un défilement infini sur jquery. http://dumpk.com/2013/06/02/how-to-create-infinite-scroll-with-ajax-on-jquery/

0voto

Tomas Randus Points 86

Essayez de vérifier ce projet :

Backbone Infinite Scroll

Ce n'est pas un plugin jQuery. C'est une sorte de vitrine d'un simple défilement infini.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X