J'ai passé du temps à essayer de trouver une fonction intéressante pour envelopper une solution. Quoi qu'il en soit, je me suis retrouvé avec ce que je pense être une meilleure solution lors du chargement de plusieurs contenus sur une seule page ou sur un site.
Fonction:
function ifViewLoadContent(elem, LoadContent)
{
var top_of_element = $(elem).offset().top;
var bottom_of_element = $(elem).offset().top + $(elem).outerHeight();
var bottom_of_screen = $(window).scrollTop() + window.innerHeight;
var top_of_screen = $(window).scrollTop();
if((bottom_of_screen > top_of_element) && (top_of_screen < bottom_of_element)){
if(!$(elem).hasClass("ImLoaded")) {
$(elem).load(LoadContent).addClass("ImLoaded");
}
}
else {
return false;
}
}
Vous pouvez ensuite appeler la fonction en utilisant window on scroll (par exemple, vous pouvez également la lier à un clic etc. comme je le fais aussi, d'où la fonction):
Utiliser:
$(window).scroll(function (event) {
ifViewLoadContent("#AjaxDivOne", "someFile/somecontent.html");
ifViewLoadContent("#AjaxDivTwo", "someFile/somemorecontent.html");
});
Cette approche devrait également fonctionner pour faire défiler les divs, etc. J'espère que cela aide, dans la question ci-dessus, vous pouvez utiliser cette approche pour charger votre contenu dans des sections, peut-être ajouter et ainsi dribbler toutes ces données d'image plutôt que l'alimentation en masse.
J'ai utilisé cette approche pour réduire les frais généraux sur https://www.taxformcalculator.com . C'est mort le tour, si vous regardez le site et inspectez l'élément, etc., vous pouvez voir l'impact sur le chargement de la page dans Chrome (à titre d'exemple).
new_element.hide().appendTo('.your_div').fadeIn(); $(window).scrollTop($(window).scrollTop()-1);
première ligne ajoute des éléments de manière agréable, la seconde assure que votre fonction ne s'arrête jamais en bas de page.