这里或那里都没有回答这个问题。这些问题措辞不佳,答案都是“使用DOMReady”。
我想确保代码仅在页面加载完成后运行。我不能改变 HTML 文件本身,但如果可以,我会做一些这样的事情:
<!DOCTYPE html>
<html>
<head>
<script>window.loaded=false;</script>
</head>
<body onload="window.loaded=true;">
<!-- ... -->
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后在我的代码中:
if (window.loaded) { run(); }
else { document.addEventListener("load", run); }
Run Code Online (Sandbox Code Playgroud)
这将实现我想要的。不幸的是,我无法修改 HTML,这意味着我正在寻找一种仅从 JS 代码确定文档是否已加载(而不是DOM 是否已准备就绪)的方法。
我环顾四周,但到目前为止,我发现的所有内容都围绕 DOMReady。真的没有人找过这个吗?
正如 Dr.Molle 指出的那样,document.readyState
包含您所追求的属性:
document . readyState
加载文档时返回“正在加载”,完成解析但仍在加载子资源后返回“交互”,加载后返回“完成”。
readystatechange
当此值更改时,将在 Document 对象上触发该事件。
事件触发和 readyState 更改的顺序在 HTML5 规范的解析部分的末尾定义。总之:
readyState
就设置"interactive"
为 。DOMContentReady
事件几乎立即触发(在确定需要加载哪些资源之后)。readyState
设置为“完成”并load
触发事件。 归档时间: |
|
查看次数: |
2185 次 |
最近记录: |