Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 确定是否在不使用任何全局变量的情况下加载了窗口_Javascript_Events_Load - Fatal编程技术网

Javascript 确定是否在不使用任何全局变量的情况下加载了窗口

Javascript 确定是否在不使用任何全局变量的情况下加载了窗口,javascript,events,load,Javascript,Events,Load,我需要知道窗口是否已加载 我想创建一个checkLoaded函数,该函数将根据我调用它的时间返回true或false来指示这一点 <html> <head> function checkLoaded(){ //alert true if window is loaded or alert false } </head> <body onload="checkLoaded()"> <!-- This should alert t

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

我想创建一个
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>

函数checkLoaded(){
//如果窗口已加载,则警报为真,或警报为假
}
住宿窗口。
checkLoaded();//这应该是错误的警告;
我不想使用在加载窗口时设置的全局变量

是否有任何方法可以检查
窗口
对象的状态,可能是属性


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

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

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

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

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

您有两个可用事件:

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

你可以看到它们之间的区别,可能只是这样:

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

var-load=false;
函数checkLoaded(){
警报(窗口已加载);
  }
加载窗口。
 
checkLoaded();

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

如果只想检查文档是否已加载,而不必担心子资源,还可以检查属性是否为“交互式”


这在当前浏览器中应该可以工作,但在所有浏览器的旧版本中都不支持。

如果您在
onload
处理程序中,则窗口已完成加载。你的问题是什么?我有一个函数,同一个函数应该是alert true或false。根据我的说法。正如格泽戈兹·卡赞在下面提到的,你只有两件事要处理。因此,您可以使用最适合您的事件中的任何一个来设置要检查的真/假值。它也可能有助于提供一些关于你想要完成什么以及为什么要这样做的背景。“窗口负载”对很多人来说意味着很多事情。这两个基本事件提供函数(){do your like here}来满足大多数需求。如果函数在完成页面加载后被调用,我需要重定向它,如果它在加载之间,我需要等待它被加载。我无法控制编写多个函数。为了便于跟踪,需要完整的laod页面,请正确理解该要求。我有一个函数,同一个函数应该是alert true或false。我的问题是我有一个函数checkLoaded,我想知道窗口是否被加载。在该函数中,查看我在两个不同位置两次调用同一函数的代码。哪些是“当前”浏览器,哪些是“旧”浏览器?此代码检查文档准备就绪,而不是窗口加载。@Steve:根据,至少IE 8+支持
complete
值。我认为这不是@TimoTijhof提到的正确答案
function checkLoaded() {
  return document.readyState === "complete";
}
function checkLoaded() {
  return document.readyState === "complete" || document.readyState === "interactive";
}