Vous pouvez écrire votre propre plugin simple en utilisant jQuery.
$.belowViewport = function(elem){
var port = $(window).scrollTop() + $(window).height();
return port <= $(elem).offset().top;
}
$.fn.onBecomeVisible = function(fn){
var obj = this;
$(window).scroll(function() {
obj.each(function() {
if(!$.belowViewport(this) && !$(this).data('scrollEventFired')){
$(this).data('scrollEventFired', true);
fn(this);
}
});
});
return this;
}
Et puis l'utiliser comme ceci
$('.elements:last').onBecomeVisible(function(elem){ loadNewElems(); });
Le script va se lier fn à chacun des ellements correspondants. La fonction sera déclenchée lorsque l'un des éléments correspondants défilera dans la vue. La fonction sera également transmise à l'élément qui a déclenché l'événement.
Notez que vous ne pouvez pas lier cet événement en direct, vous devrez donc le relier après avoir ajouté de nouveaux éléments (en supposant que vous souhaitez que l'événement soit également présent sur le dernier de ces événements).
EDIT
je me suis trompé ici,: visible ne retourne pas si oui ou non un élément est dans la fenêtre. Cependant j'ai édité la source ainsi elle vérifie maintenant si un élément est dans la fenêtre d'affichage. La fonction vérifie si l'élément est en dessous de la fenêtre, nous supposons que si elle n'est pas en dessous de la fenêtre, elle a été déplacée dans la vue et que nous devrions exécuter la fonction.
EDIT2
testé ce en chrome 1.0 Google, Firefox 3.0.10 et IE7
+1, c'est plutôt génial si ça marche. (Correction de l'orthographe du défilement) - Off pour l'essayer. – cgp