h5 加载完成_JavaScript如何更优雅的断定图片资源已加载完成

点击右上方红色按钮关注“小郑搞码事”,每天都能学到知识,搞懂一个问题!

在H5的页面中,我们经常会看到开头有一个loading的效果,这个loading的时间内就是在加载图片资源,以便后续滑屏效果更流畅。那么JS如何来判断图片资源已加载完成呢?且如何能更优雅的写断定代码。

首先,提一下两个事件:jquery中有一个ready和window.onload的区别。ready只是dom结构加载完成,图片并没有加载完毕,而onload是dom生成和资源完全加载出来后才执行,这里也就包括图片已加载。

所以,基本这点,接下来我们来看一下JS是如何断定单图和多图加载完成的。

考虑兼容

IE8下版本不支持onload事件,但支持onreadystatechange事件,readyState是onreadystatechange事件的一个状态,值为loaded或complete的时候,表示已经加载完毕。代码如下所示:

a875dfd8f3703564957f4d6bb0aa608f.png

不考虑兼容

在不考虑兼容的情况下,使用onload事件就足够了,下面分单图和多图及结合promise来给出代码。

1. 单图(onload)

3dd8f65c555d994f63a5c85a08f61880.png

2. 单图(+promise)

92e03b7e10345461a3e05fd0c341699d.png

3. 多图(onload)

20cf2b9af538bd669f649d42b00549f2.png

4. 多图(+promise)

33e3cd9b7bd414b949212f5ab124b21c.png