Existe-t-il un moyen de détecter quand une page a fini de se charger, c'est-à-dire tout son contenu, son javascript et ses ressources telles que css et images?
alors comme:
if(PAGE HAS FINISHED LOADING)
{
// do something amazing
}
et aussi si la page se charge depuis plus d'une minute, faites autre chose comme:
if(PAGE HAS BEEN LOADING FOR 1 MIN)
{
// do something else amazing
}
J'ai vu des sites Web comme MobileMe d'Apple effectuer des vérifications similaires, mais je n'ai pas été en mesure de le comprendre dans leurs énormes bibliothèques de codes.
Quelqu'un peut-il aider?
Merci
EDIT: C'est essentiellement ce que je veux faire:
// 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
(ou$(window).load()
) ne fonctionnerait pas?Réponses:
Ou http://jsfiddle.net/tangibleJ/fLLrs/1/
Voir aussi http://api.jquery.com/load-event/ pour une explication sur jQuery (window) .load.
Mettre à jour
Une explication détaillée du fonctionnement du chargement javascript et des deux événements DOMContentLoaded et OnLoad peut être trouvée sur cette page .
DOMContentLoaded : lorsque le DOM est prêt à être manipulé. La manière de jQuery de capturer cet événement est avec
jQuery(document).ready(function () {});
.OnLoad : Lorsque le DOM est prêt et que tous les actifs - cela inclut les images, les iframe, les polices, etc. - ont été chargés et la classe roue / heure disparaît. La manière de jQuery de capturer cet événement est celle mentionnée ci-dessus
jQuery(window).load
.la source
jQuery.load()
était obsolète depuis jQuery / 1.8 et supprimé dans jQuery / 3. La syntaxe actuelle estjQuery(window).on("load", function(){/*...*/});
.il y a deux façons de faire cela dans jquery en fonction de ce que vous recherchez.
en utilisant jquery, vous pouvez faire
// cela attendra que les ressources de texte soient chargées avant d'appeler ceci (le dom .. css .. js)
// cela attendra la fin du chargement de toutes les images et du texte avant de s'exécuter
la source
Cela s'appelle onload. DOM ready a en fait été créé pour la raison exacte que le chargement attendait les images. (Réponse tirée de Matchu sur une question similaire il y a quelque temps.)
onload attend toutes les ressources qui font partie du document.
Lien vers une question où il a tout expliqué:
Cliquez sur moi, vous savez que vous le voulez!
la source
Je pense que le moyen le plus simple serait
EDIT, pour être un peu fou:
la source
Une autre option, vous pouvez vérifier le document.readyState comme,
À partir de la documentation de la page readyState, le résumé de l'état complet est
la source
$(window).on("load" function () {//dostuff})
...?Une option consiste à laisser la page vierge, contenant une petite quantité de javascript. Utilisez le script pour effectuer un appel AJAX pour obtenir le contenu réel de la page et demandez à la fonction de succès d'écrire le résultat sur le document actuel. Dans la fonction de temporisation, vous pouvez "faire quelque chose d'autre incroyable"
Pseudocode approximatif:
la source
Est-ce ce que vous aviez en tête?
la source
Utilisation de jquery: https://learn.jquery.com/using-jquery-core/document-ready/
la source
Sans jquery ou quelque chose comme ça parce que pourquoi pas?
la source
jquery
fonctionne.DOMContentLoaded
est déclenché uniquement après le chargement d'un contenu externe (notamment des images, ce qui peut prendre du temps dans certaines conditions).jquery
fonctionne à l'.ready()
aide d'événements spécifiques au navigateur, qui (sur la plupart des navigateurs) se produisent avant le chargement du contenu externe.FYI des personnes qui ont demandé dans les commentaires, voici ce que j'ai réellement utilisé dans les projets:
la source