使用JavaScript判断图片是否加载完成的三种实现方式


Posted in Javascript onMay 04, 2014

有时需要获取图片的尺寸,这需要在图片加载完成以后才可以。有三种方式实现,下面一一介绍。

一、load事件

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>img - load event</title> 
</head> 
<body> 
<img id="img1" src="http://pic1.win4000.com/wallpaper/f/51c3bb99a21ea.jpg"> 
<p id="p1">loading...</p> 
<script type="text/javascript"> 
img1.onload = function() { 
p1.innerHTML = 'loaded' 
} 
</script> 
</body> 
</html>

测试,所有浏览器都显示出了“loaded”,说明所有浏览器都支持img的load事件。

二、readystatechange事件

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>img - readystatechange event</title> 
</head> 
<body> 
<img id="img1" src="http://pic1.win4000.com/wallpaper/f/51c3bb99a21ea.jpg"> 
<p id="p1">loading...</p> 
<script type="text/javascript"> 
img1.onreadystatechange = function() { 
if(img1.readyState=="complete"||img1.readyState=="loaded"){ 
p1.innerHTML = 'readystatechange:loaded' 
} 
} 
</script> 
</body> 
</html>

readyState为complete和loaded则表明图片已经加载完毕。测试IE6-IE10支持该事件,其它浏览器不支持。

三、img的complete属性

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>img - complete attribute</title> 
</head> 
<body> 
<img id="img1" src="http://pic1.win4000.com/wallpaper/f/51c3bb99a21ea.jpg"> 
<p id="p1">loading...</p> 
<script type="text/javascript"> 
function imgLoad(img, callback) { 
var timer = setInterval(function() { 
if (img.complete) { 
callback(img) 
clearInterval(timer) 
} 
}, 50) 
} 
imgLoad(img1, function() { 
p1.innerHTML('加载完毕') 
}) 
</script> 
</body> 
</html>

轮询不断监测img的complete属性,如果为true则表明图片已经加载完毕,停止轮询。该属性所有浏览器都支持。
使用JavaScript判断图片是否加载完成的三种实现方式 
Javascript 相关文章推荐
从JavaScript的函数重名看其初始化方式
Mar 08 Javascript
js hover 定时器(实例代码)
Nov 12 Javascript
如何用JavaScript定义一个类
Sep 12 Javascript
jQuery中DOM树操作之复制元素的方法
Jan 23 Javascript
深入理解JavaScript系列(33):设计模式之策略模式详解
Mar 03 Javascript
JavaScript中的bold()方法使用详解
Jun 08 Javascript
javascript淘宝主图放大镜功能
Oct 20 Javascript
angular2中Http请求原理与用法详解
Jan 11 Javascript
vue router的基本使用和配置教程
Nov 05 Javascript
小程序指纹验证的实现代码
Dec 04 Javascript
js实现移动端吸顶效果
Jan 08 Javascript
基于脚手架创建Vue项目实现步骤详解
Aug 03 Javascript
使用JavaScript获取电池状态的方法
May 03 #Javascript
JavaScript打印网页指定区域的例子
May 03 #Javascript
js检测输入内容全为空格的方法
May 03 #Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
May 03 #Javascript
离开当前页面前使用js判断条件提示是否要离开页面
May 02 #Javascript
js日期联动示例
May 02 #Javascript
jQuery实现的多选框多级联动插件
May 02 #Javascript
You might like
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
php设计模式 Template (模板模式)
2011/06/26 PHP
深入解析PHP的引用计数机制
2013/06/14 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
2016/05/28 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
简单介绍react redux的中间件的使用
2018/04/06 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
Layui实现数据表格默认全部显示(不要分页)
2019/10/26 Javascript
为什么推荐使用JSX开发Vue3
2020/12/28 Vue.js
利用python批量修改word文件名的方法示例
2017/10/17 Python
Python中的默认参数实例分析
2018/01/29 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
哪些是python中web开发框架
2020/06/17 Python
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
定义一结构体数组表示分数,并求两个分数相加之和
2013/06/11 面试题
如何写好建议书
2014/03/13 职场文书
企业贷款委托书格式
2014/09/12 职场文书
离婚协议书范本2014
2014/10/27 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
社区青年志愿者活动总结
2015/05/06 职场文书
安全主题班会教案
2015/08/12 职场文书
互联网创业商业模式以及赚钱法则有哪些?
2019/10/12 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书
Python爬虫实战之爬取携程评论
2021/06/02 Python
分布式架构Redis中有哪些数据结构及底层实现原理
2022/03/13 Redis