加载页面时运行代码

Run code when the page is loaded

本文关键字:运行 代码 加载      更新时间:2023-09-26

这里或那里都没有回答这个问题。这些问题措辞不佳,答案都是"使用 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展开的。真的没有人找过这个吗?

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

document . readyState

在文档加载时返回"正在加载",在

完成解析但仍加载子资源后返回"交互式",在加载后返回"完成"。

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

事件触发和 readyState 更改的顺序在 HTML5 规范的解析末尾部分定义。总结:

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

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

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