此未已接听here或there。这些问题的措辞很差,答案都是“使用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。没有人真的想过这个吗?
答案 0 :(得分:4)
正如Dr.Molle所指出的,document.readyState
包含您所追求的属性:
document . readyState
在文档加载时返回“loading”,在完成解析但仍加载子资源时返回“interactive”,并在加载后“返回”。
当此值更改时,
readystatechange
事件将在Document对象上触发。
事件触发和readyState更改的顺序在HTML5规范的end of parsing部分中定义。总结:
readyState
将设置为"interactive"
。DOMContentReady
事件几乎立即被触发(在确定需要加载哪些资源之后)。readyState
设置为“完成”,并触发load
事件。答案 1 :(得分:3)
当DOM和所有资源(脚本,图像,样式表等)完成加载时,窗口的onload-event会触发:
window.onload=function()
{
//run code
}