Déterminer si la fenêtre a été chargée sans utiliser de variables globales

Je dois savoir si la fenêtre a été chargée ou non.

Je veux créer une fonction checkLoaded qui renverra true ou false pour indiquer cela, en fonction de quand je l'appelle.

 <html> <head> function checkLoaded(){ //alert true if window is loaded or alert false } </head> <body onload="checkLoaded()"> <!-- This should alert true --> Loding window. <script> checkLoaded();// this should alert false; </script> </body> </html> 

Je ne veux pas utiliser une variable globale que j'ai configurée lorsque la fenêtre se charge.

Est-ce que je peux vérifier l'état de l'objet de la window , peut-être une propriété?

Je ne veux pas utiliser jQuery ou toute autre bibliothèque externe.

Vous pouvez utiliser la propriété document.readyState pour vérifier si le document a été chargé sans avoir écouté d'événements. Il sera configuré pour "complete" vérifier "complete" si le document et toutes les sous-ressources sont chargées. (Ceci correspond à l'événement de load ).

 function checkLoaded() { return document.readyState === "complete"; } 

Si vous souhaitez seulement vérifier si le document a été chargé, sans vous soucier des sous-sources, vous pouvez également vérifier si la propriété est "interactive" .

 function checkLoaded() { return document.readyState === "complete" || document.readyState === "interactive"; } 

Cela devrait fonctionner dans les navigateurs actuels, mais n'est pas pris en charge dans les anciennes versions de tous les navigateurs.

Vous avez 2 événements disponibles:

 addListener(document, "DOMContentLoaded", function(){}); //Dom parsing is finished addListener(window, "load", function(){}); //loading of all external stuff is done 

Vous pouvez voir une différence chez ceux ici

Peut-être simplement quelque chose comme ça:

 <html> <script> var loaded = false; function checkLoaded(){ alert(window.loaded); } </script> <body onload="window.loaded = true; checkLoaded()">  Loading window. <script> checkLoaded(); </script> </body> </html> 

Cela va alerter lorsque la fenêtre est chargée:

 (function(w) { //private variable var loaded = false; w.onload = function() { loaded = true; }; w.checkLoaded = function() { alert(loaded); }; })(window); 

Vous pouvez maintenant appeler checkLoaded() partir de n'importe quelle partie de votre application et elle renverra true ou false.

Est-ce que cela aide ?

 <script> var loaded = false; function checkLoaded(){ alert(loaded); //alert true if window is loaded or alert false } </script> <body onload="loaded = true;checkLoaded();"> <!-- This should alert true --> Loding window. <script> checkLoaded();// this should alert false; </script> </body>