Gibt es eine Möglichkeit zu erkennen, wann eine Seite vollständig geladen wurde, dh alle Inhalte, Javascript und Assets wie CSS und Bilder?
So wie:
if(PAGE HAS FINISHED LOADING)
{
// do something amazing
}
und zusätzlich, wenn die Seite länger als 1 Minute geladen wurde, tun Sie etwas anderes wie:
if(PAGE HAS BEEN LOADING FOR 1 MIN)
{
// do something else amazing
}
Ich habe gesehen, dass Websites wie Apples MobileMe ähnliche Überprüfungen durchgeführt haben, konnte dies jedoch in ihren riesigen Codebibliotheken nicht herausfinden.
Kann jemand helfen?
Vielen Dank
EDIT: Dies ist im Wesentlichen, was ich tun möchte:
// hide content
$("#hide").hide();
// hide loading
$("#loading").hide();
// fade in loading animation
setTimeout($('#loading').fadeIn(), 200);
jQuery(window).load(function() {
$("#hide").fadeIn();
$("#loading").fadeOut(function() {
$(this).remove();
clearInterval(loadingAnim);
});
setTimeout(function() {
$("#error").fadeIn();
}, 60000);
});
window.onload
(oder$(window).load()
) nicht funktionieren würde?Antworten:
Oder http://jsfiddle.net/tangibleJ/fLLrs/1/
Unter http://api.jquery.com/load-event/ finden Sie eine Erläuterung zur jQuery (Fenster) .load.
Aktualisieren
Eine ausführliche Erklärung zur Funktionsweise des JavaScript-Ladens und zu den beiden Ereignissen DOMContentLoaded und OnLoad finden Sie auf dieser Seite .
DOMContentLoaded : Wenn das DOM zur Bearbeitung bereit ist. jQuerys Art, dieses Ereignis zu erfassen, ist mit
jQuery(document).ready(function () {});
.OnLoad : Wenn das DOM bereit ist und alle Assets - einschließlich Bilder, Iframe, Schriftarten usw. - geladen wurden und die sich drehende Rad- / Stundenklasse verschwindet. Die Methode von jQuery zur Erfassung dieses Ereignisses ist die oben erwähnte
jQuery(window).load
.quelle
jQuery.load()
seit jQuery / 1.8 veraltet und in jQuery / 3 entfernt wurde. Aktuelle Syntax istjQuery(window).on("load", function(){/*...*/});
.Es gibt zwei Möglichkeiten, dies in jquery zu tun, je nachdem, wonach Sie suchen.
Mit jquery können Sie tun
// Dies wartet darauf, dass die Text-Assets geladen werden, bevor dies aufgerufen wird (dom .. css .. js).
// Dies wartet, bis alle Bilder und Textelemente geladen sind, bevor sie ausgeführt werden
quelle
Das nennt man Onload. DOM ready wurde tatsächlich aus dem genauen Grund erstellt, aus dem Onload auf Bilder wartete. (Antwort von Matchu auf eine ähnliche Frage vor einiger Zeit.)
Onload wartet auf alle Ressourcen, die Teil des Dokuments sind.
Link zu einer Frage, in der er alles erklärt hat:
Klicken Sie auf mich, Sie wissen, dass Sie wollen!
quelle
Ich denke, der einfachste Weg wäre
EDIT, um ein bisschen verrückt zu sein:
quelle
Eine weitere Option, die Sie im document.readyState überprüfen können , ist:
Aus der Dokumentation der readyState-Seite geht die Zusammenfassung des vollständigen Status hervor
quelle
$(window).on("load" function () {//dostuff})
...?Eine Möglichkeit besteht darin, dass die Seite leer ist und eine kleine Menge Javascript enthält. Verwenden Sie das Skript, um einen AJAX-Aufruf durchzuführen, um den tatsächlichen Seiteninhalt abzurufen, und lassen Sie die Erfolgsfunktion das Ergebnis über das aktuelle Dokument schreiben. In der Timeout-Funktion können Sie "etwas anderes Erstaunliches tun"
Ungefährer Pseudocode:
quelle
Hast du das gedacht?
quelle
Verwenden von jquery: https://learn.jquery.com/using-jquery-core/document-ready/
quelle
Ohne jquery oder so etwas, warum nicht?
quelle
jquery
der Leistung.DOMContentLoaded
wird erst ausgelöst, nachdem externer Inhalt geladen wurde (insbesondere Bilder, die unter bestimmten Bedingungen lange dauern können).jquery
Funktioniert.ready()
mit browserspezifischen Ereignissen, die (bei den meisten Browsern) auftreten, bevor externe Inhalte geladen werden.Zu Ihrer Information von Leuten, die in den Kommentaren gefragt haben, das habe ich tatsächlich in Projekten verwendet:
quelle