Question

Recherche d'un script js qui affichera un message (quelque chose comme & "Chargement en cours, veuillez patienter &";) jusqu'à ce que la page charge toutes les images .

Important - il ne doit utiliser aucun framework Js (jquery, mootools, etc.), il doit s'agir d'un script js ordinaire.

Le message doit disparaître lorsque la page est chargée.

Était-ce utile?

La solution

Oui, une question de vieille école! Cela remonte à l'époque où nous avions préchargé les images ...

Quoi qu'il en soit, voici du code. La magie est la & "Complète &"; propriété de la collection document.images (objets Image).

// setup a timer, adjust the 200 to some other milliseconds if desired
var _timer = setInterval("imgloaded()",200); 

function imgloaded() {
  // assume they're all loaded
  var loaded = true;

  // test all images for "complete" property
  for(var i = 0, len = document.images.length; i < len; i++) {
    if(!document.images[i].complete) { loaded = false; break; }
  }

  // if loaded is still true, change the HTML
  if(loaded) {
    document.getElementById("msg").innerHTML = "Done.";

    // clear the timer
    clearInterval(_timer);
  }
};

Bien sûr, cela suppose que vous ayez inséré un DIV quelque part:

<div id="msg">Loading...</div>

Autres conseils

Ajoutez simplement un <div> statique à la page, informant ainsi l'utilisateur que la page est en cours de chargement. Ajoutez ensuite window.onload un gestionnaire et supprimez le div.

BTW, quelle & # 8217; est la raison de cela? Don & # 8217; Les utilisateurs ont-ils déjà un indicateur de chargement de page dans leur navigateur?

Vous devez faire des requêtes ajax async. pour les images et ajouter un rappel une fois l'opération terminée.
Voici du code pour l’illustrer:

var R = new XMLHttpRequest();
R.onreadystatechange = function() {
  if (R.readyState == 4) {
    // Do something with R.responseXML/Text ...
    stopWaiting();
  }
};

Théoriquement, vous pourriez avoir un événement onload sur chaque objet image qui exécute une fonction qui vérifie si toutes les images sont chargées. De cette façon, vous n'avez & # 180; pas besoin d'un setTimeOut (). Cela échouerait toutefois si une image & # 180; t ne se chargeait pas, vous deviez donc également prendre en compte l'erreur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top