图片载入状态判断及实现百分比效果loading
前言
一些大的外部资源会导致页面加载速度慢,这时候一般会加上loading效果;这里实现的是根据图片加载进度的百分比loading效果
如何判断图片加载的状态
1、onload onerror
推荐使用这种方法,在图片加载成功后,会触发onload事件,就算有缓存只要重新请求了图片地址,都会触发onload事件;图片加载失败会触发onerror事件。这种方式兼容性良好,推荐
2、imgObj.onreadystatechange
部分浏览器支持此种方法,根据 readState === ‘complete'可判断图片是否加载完成。
测试了下:
chrome,firefox不会触发此事件
IE Edge版本 不会触发此事件
IE 10 9 会触发此事件;更低版本的没有测试
所以不推荐使用
3、imgObj.complete
complete属性可以判断图片是否加载完成。但是不同的浏览器对complete的处理不一致:
如果图片资源正常,图片加载成功 所有浏览器都是 complete从false变为true;
但是如果图片资源异常,图片加载失败 chrome和firefox 在载入失败后从false变为true;但是IE 会一直是false
所以不推荐使用这种方式。
图片资源加载进度
可以判断出单个图片资源是否加载完成了,就很容易计算出整个页面所有图片资源加载的进度了。
document.addEventListener('DOMContentLoaded', function(){
var imgs = document.querySelectorAll('img'), //所有图片资源
show = 0, //百分比
num = 0; //加载完成的个数
var all = imgs.length;
[].slice.call(imgs).forEach(function(element,index){
//不管是否加载成功,都num+1
element.addEventListener('load',function(){
num++;
show = Math.floor(100*num/all); }) element.addEventListener('error',function(){
num++;
show = Math.floor(100*num/all);
})
})
})
在加上蒙版和百分比字样,很容易实现载入的百分比效果。
在页面全部加载完成后,再隐藏蒙版,即可实现比较友好的loading效果了
window.onload = function(){
document.querySelector('.mask').classList.add('hide');
}
图片载入状态判断及实现百分比效果loading的更多相关文章
- JS不同浏览器图片载入处理
//不同浏览器图片加载判断 p.loadImgVerify = function(oimg,fn){ //载入发起请求 加入JS单线程队列事件(当状态满足时候执行些事件) if (qp_shared. ...
- hammer使用: 代码:捏合、捏开、图片放大 的一个手机图片“放大缩小可拖动”的小效果
hammer.js 的使用. (手机手势插件) 捏合.捏开.图片放大 的一个手机图片“放大缩小可拖动”的小效果. 相关js 到 http://www.bootcdn.cn/ 查找和下载. hamme ...
- Android Handler 异步消息处理机制的妙用 创建强大的图片载入类
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38476887 ,本文出自[张鸿洋的博客] 近期创建了一个群.方便大家交流,群号: ...
- Cocos2d-x 3.0心得(01)-图片载入与混合模式
近期開始用cocos2dx 3.0做东西,略有心(cao)得(dian),略微作下记录吧. v3.0相对v2.2来说,最引人注意的,应该是对触摸层级的优化.和lambda回调函数的引入(嗯嗯.不枉我改 ...
- easyui实现背景图片半透明状态,悬浮在大背景之上
首先是查找素材,使用AI将所需要的图案画出来,切记将图案的背景设置为所需要的透明状态.项目使用的是easyui架构 为啥加两个背景图呢,因为这样的布局最开始是给一个矩形框加上的背景图片,若是还使用矩形 ...
- Android图片载入框架最全解析(一),Glide的基本使用方法
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/53759439 本文同步发表于我的微信公众号.扫一扫文章底部的二维码或在微信搜索 郭 ...
- Android批量图片载入经典系列——afinal框架实现图片的异步缓存载入
一.问题描写叙述 在之前的系列文章中,我们使用了Volley和Xutil框架实现图片的缓存载入,接下来我们再介绍一下afinal 框架的使用. Afinal 是一个android的http框架.sql ...
- 一个方便的图片载入框架——ImageViewEx
我的博客:http://mrfufufu.github.io/ 一.前言 近期在整理项目中的一些代码,以备即将开展的新项目中使用,刚刚整理到一个图片载入的 lib.用起来很的简单,和 picasso ...
- Universal-Image-Loader(UIL)图片载入框架使用简介
这个也是近期项目中使用到的第三方图片载入框架.在这里也自己总结一下,简单的介绍一些使用的方式. UIL图片载入框架特点 简单介绍: 项目地址:https://github.com/nostra13/A ...
随机推荐
- quartz源码分析——执行引擎和线程模型
title: quartz源码分析--执行引擎和线程模型 date: 2017-09-09 23:14:48 categories: quartz tags: [quartz, 源码分析] --- - ...
- hdu 2066 最短路水题
题意:给出多个可选择的起始点和终点,求最短路 思路:执行起始点次的spfa即可 代码: #include<iostream> #include<cstdio> #include ...
- 201521123011 《Java程序设计》第4周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:1.super() 子类不能继承父类的构造方法,但可以通过super关键字去访问父类的构 ...
- 201521123077 《Java程序设计》第1周学习总结
1. 本章学习总结 java语言的历史 dos下运行 java文件 Math ,String ,Scanner,Interger等常用类的使用 jdk,jre,jvm等概念的了解 classpath, ...
- java课程设计 猜数游戏 个人
1.团队课程设计博客链接 /http://www.cnblogs.com/ohanna/p/7064305.html 2.个人负责模块说明 1.进入界面: 2.成功玩家信息的录入: 3.信息的读出 3 ...
- 201521123012 《Java程序设计》第十三周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec ...
- java课程设计——猜数游戏个人博客
1.团队课程设计链接 团队博客:http://www.cnblogs.com/springbreezemiles/p/7064135.html 2.个人负责模块 猜数部分的算法及代码实现. 3.自己的 ...
- Q:哪里可以注册hk域名?A:这里!这里!(小白绢挥手)
注意!前方有一条比你妈手中的竹板还硬的推文出没······ 咳咳,清清喉咙,预备唱! (请自动代入甜蜜蜜的曲调) 甜蜜蜜你笑的甜蜜蜜 好像花儿开在春风里 开在春风里 在哪里在哪里见过你 .HK域 ...
- appium实例编写(1)---以ContactsTest.apk 操作为例
详情参照 http://www.cnblogs.com/puresoul/p/4696825.html#3326873 自己练习一遍 前言: appium环境搭建参照另一篇博客:http:// ...
- 谈一谈最近学了一段时间的node.js
官方说明 1.NodeJS宣称其目标是“旨在提供一种简单的构建可伸缩网络程序的方法”. 2.node是一个基于Chrome V8引擎进行代码解释的.轻量.可伸缩的具有事件驱动和非阻塞I/O机制的js运 ...