16

我需要确定窗口是否已加载。

我想根据我调用它的时间创建一个checkLoaded返回true或指示这一点的函数。false

<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 或任何其他外部库。

4

4 回答 4

44

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

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

如果只想查看文档是否加载完毕,不用担心子资源,也可以查看属性是否为"interactive".

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

这应该适用于当前浏览器,但不支持所有旧版本的浏览器。

于 2012-07-18T14:00:16.433 回答
1

您有 2 个可用的事件:

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

你可以在这里看到它们的不同

于 2012-07-17T18:01:55.983 回答
0

这将在加载窗口时发出警报:

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

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

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

于 2012-07-17T17:57:56.483 回答
0

也许只是这样的事情:

<html>
<script>
  var loaded = false;
  function checkLoaded(){
     alert(window.loaded);
  }
</script>
<body onload="window.loaded = true; checkLoaded()">
   Loading window.
   <script>
       checkLoaded();
   </script>
</body>
</html>
于 2012-07-17T18:55:56.460 回答