加载页面时运行代码

时间:2012-05-26 07:49:49

标签: javascript load

已接听herethere。这些问题的措辞很差,答案都是“使用DOMReady”。

我想确保只有在页面加载完成后才运行代码。我不能改变HTML文件本身,但如果可以的话,我会做一些相当于这个的事情:

<!DOCTYPE html>
<html>
  <head>
    <script>window.loaded=false;</script>
  </head>
  <body onload="window.loaded=true;">
    <!-- ... -->
  </body>
</html>

然后在我的代码中:

if (window.loaded) { run(); }
else { document.addEventListener("load", run); }

这将完全符合我的要求。不幸的是,我无法修改HTML,这意味着我正在寻找一种方法来确定文档是否仅从JS代码中加载不是,如果DOM已准备好)

我已经看了很多,但到目前为止,我发现的所有内容都围绕着DOMReady。没有人真的想过这个吗?

2 个答案:

答案 0 :(得分:4)

正如Dr.Molle所指出的,document.readyState包含您所追求的属性:

  

document . readyState

     

在文档加载时返回“loading”,在完成解析但仍加载子资源时返回“interactive”,并在加载后“返回”。

     

当此值更改时,readystatechange事件将在Document对象上触发。

事件触发和readyState更改的顺序在HTML5规范的end of parsing部分中定义。总结:

  1. 解析完成后,文档readyState将设置为"interactive"
  2. DOMContentReady事件几乎立即被触发(在确定需要加载哪些资源之后)。
  3. 加载了这些资源。
  4. 文档readyState设置为“完成”,并触发load事件。

答案 1 :(得分:3)

当DOM和所有资源(脚本,图像,样式表等)完成加载时,窗口的onload-event会触发:

window.onload=function()
{
  //run code 
}