JavaScript页面已完全加载的布尔检查

4

除了在window.onload内设置变量外,有没有一种方法可以检测页面是否已经加载完成?

我正在向可能未完全加载的页面中注入一些第三方JS。我无法修改页面,也不能使用JQuery。

我可以添加一个函数并重复轮询直到它返回true(页面完全加载)。有什么想法吗?


看一下jQuery的实现。或者将您的代码放在DOM树的末尾。 - SwiftMango
2
window对象上设置load事件处理程序有什么问题吗?如果您担心覆盖现有的事件处理程序,请使用addEventListener。http://www.quirksmode.org/js/events_advanced.html - Felix Kling
你想要实现什么目标? - epascarello
2个回答

14

我会利用readyState

例如,首先检查文档是否已加载,如果未加载,则设置监听器:

if(document.readyState === 'ready' || document.readyState === 'complete') {
  doSomething();
} else {
  document.onreadystatechange = function () {
    if (document.readyState == "complete") {
      doSomething();
    }
  }
}

9
您可以查看document.readyState属性。
来自MDN:
返回"loading"代表文档正在加载中,返回"interactive"代表文档已完成解析但仍在加载子资源,返回"complete"则表示文档已经完全加载。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接