确定窗口是否已加载,而无需使用任何全局变量(Determining whether the wind

2019-06-26 08:37发布

我需要找出如果窗口已加载与否。

我想创建一个checkLoaded函数将返回truefalse ,表示此,基于当我把它上。

<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>

我不想使用全局变量,我的窗口加载时设置。

有没有办法,我可以检查任何方式window对象的状态,也许是财产?

我不想使用jQuery或任何其他外部库。

Answer 1:

您可以使用document.readyState属性来检查文件是否不听任何事件加载。 它将被设置为"complete"检查文档和所有子资源被加载。 (这对应于load的事件。)

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

如果你只是想检查,如果该文件已加载,而不用担心子资源,你也可以检查属性是"interactive"

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

这应该在目前的浏览器,但在旧版本的所有浏览器不支持。



Answer 2:

你有2个可用的事件:

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

你可以看到在这些差异在这里



Answer 3:

也许简单地是这样的:

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


Answer 4:

当窗口加载这将提醒:

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

    w.checkLoaded = function() {
        alert(loaded);
    };
})(window);

现在,您可以拨打checkLoaded()从您的应用程序的任何部分,它会返回true或false。



Answer 5:

这是否帮助?

<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>


文章来源: Determining whether the window has loaded without using any global variables