Ich habe einige Zeit damit verbracht, eine nette Funktion zu finden, um eine Lösung zu finden. Am Ende ist dies meiner Meinung nach eine bessere Lösung, wenn mehrere Inhalte auf einer einzelnen Seite oder auf einer Website geladen werden.
Funktion:
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;
}
}
Sie können die Funktion dann über das Fenster beim Scrollen aufrufen (Sie können sie beispielsweise auch an einen Klick usw. binden, wie ich es auch tue, daher die Funktion):
Benutzen:
$(window).scroll(function (event) {
ifViewLoadContent("#AjaxDivOne", "someFile/somecontent.html");
ifViewLoadContent("#AjaxDivTwo", "someFile/somemorecontent.html");
});
Dieser Ansatz sollte auch zum Scrollen von Divs usw. funktionieren. Ich hoffe, er hilft. In der obigen Frage können Sie diesen Ansatz verwenden, um Ihre Inhalte in Abschnitte zu laden, möglicherweise alle Bilddaten anzuhängen und damit zu dribbeln, anstatt Massen-Feeds.
Ich habe diesen Ansatz verwendet, um den Overhead auf https://www.taxformcalculator.com zu reduzieren . Es ist der Trick gestorben, wenn Sie sich die Site ansehen und Elemente usw. untersuchen, können Sie die Auswirkungen auf das Laden von Seiten in Chrome sehen (als Beispiel).
new_element.hide().appendTo('.your_div').fadeIn(); $(window).scrollTop($(window).scrollTop()-1);
ersten Zeile werden Elemente auf nette Weise angehängt, in der zweiten wird sichergestellt, dass Ihre Funktion niemals am Ende der Seite stoppt.