js-判断页面是否加载完成

对于页面来说,dom结构,样式,脚本也属于内容,页面内的图片文字视频音频也是内容。

那么我们常用的 window.onload和 jquery 中的 ready 函数就能判断内容是否全部加载完成吗?答案是否定的。以上两个只能判定页面骨架加载完成了,但是不能判定页面资源是否加载完成,比如页面的超大图片,视频等。还有如果是有异步请求的资源等都无法检测到的,尤其是在 onload 之后发生的请求。

onreadystatechange回调不行,原因:每当有请求发生时 readyState 都会改变并触发 onreadystatechange

如果需要动态处理 dom 那么在 onload|ready 中就可以了,因为此时页面 dom 已经加载完成了。如果你需要对某些异步的请求做监控,则只需要在对应的异步中添加上回调即可。

1
2
3
4
5
6
7
if(document.readyState == “complete”) //当页面加载状态 



window.onload页面(包括资源)准备就绪

document.onloadDOM加载完毕