Pasé algún tiempo tratando de encontrar una buena función para envolver una solución. De todos modos, terminé con esto, que creo que es una mejor solución al cargar contenido múltiple en una sola página o en un sitio.
Función:
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;
}
}
Luego puede llamar a la función usando la ventana en el desplazamiento (por ejemplo, también puede vincularlo a un clic, etc., como también lo hago, de ahí la función):
Usar:
$(window).scroll(function (event) {
ifViewLoadContent("#AjaxDivOne", "someFile/somecontent.html");
ifViewLoadContent("#AjaxDivTwo", "someFile/somemorecontent.html");
});
Este enfoque también debería funcionar para el desplazamiento de divs, etc. Espero que ayude, en la pregunta anterior, podría usar este enfoque para cargar su contenido en secciones, tal vez agregar y, por lo tanto, regatear todos esos datos de imagen en lugar de alimentación masiva.
Utilicé este enfoque para reducir la sobrecarga en https://www.taxformcalculator.com . Se acabó el truco, si miras el sitio e inspeccionas el elemento, etc., puedes ver el impacto en la carga de la página en Chrome (como ejemplo).
new_element.hide().appendTo('.your_div').fadeIn(); $(window).scrollTop($(window).scrollTop()-1);
primera línea agrega elementos de manera agradable, la segunda asegura que su función nunca se detiene en la parte inferior de la página.