确定窗口是否已加载而不使用任何全局变量

gau*_*171 13 javascript events load

我需要知道窗口是否已加载.

我想创建一个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>
Run Code Online (Sandbox Code Playgroud)

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

有什么方法可以检查window对象的状态,也许是属性?

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

小智 36

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

function checkLoaded() {
  return document.readyState === "complete";
}
Run Code Online (Sandbox Code Playgroud)

如果您只想检查文档是否已加载,而不必担心子资源,您还可以检查属性是否"interactive".

function checkLoaded() {
  return document.readyState === "complete" || document.readyState === "interactive";
}
Run Code Online (Sandbox Code Playgroud)

这应该适用于当前的浏览器,但在所有浏览器的旧版本中都不受支持.

  • 此代码检查文档就绪,而不是窗口加载.有一点不同http://stackoverflow.com/a/8835458/319266 (8认同)