使用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 相关文章推荐
jQuery中jqGrid分页实现代码
Nov 04 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
May 24 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
Jun 25 Javascript
JQuery学习总结【一】
Dec 01 Javascript
深入理解requireJS-实现一个简单的模块加载器
Jan 15 Javascript
轻量级JS Cookie插件js-cookie的使用方法
Mar 22 Javascript
JSON生成Form表单的方法示例
Nov 21 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
Apr 20 Javascript
微信小程序实现卡片左右滑动效果的示例代码
May 01 Javascript
vue-cli 为项目设置别名的方法
Oct 15 Javascript
解决vue-cli 打包后自定义动画未执行的问题
Nov 12 Javascript
vue 移动端记录页面浏览位置的方法
Mar 11 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
腾讯QQ php程序员面试题目整理
2010/06/08 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
php eval函数用法总结
2012/10/31 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
深入理解Javascript闭包 新手版
2010/12/28 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
JS中attr和prop属性的区别以及优先选择示例介绍
2014/06/30 Javascript
javascript获取select值的方法分析
2015/07/02 Javascript
node.js中格式化数字增加千位符的几种方法
2015/07/03 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
JSONP原理及简单实现
2016/06/08 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
koa router 多文件引入的方法示例
2019/05/22 Javascript
详解vue-video-player使用心得(兼容m3u8)
2019/08/23 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
2021/01/05 Vue.js
JS中箭头函数与this的写法和理解
2021/01/14 Javascript
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
Python写的Socks5协议代理服务器
2014/08/06 Python
python使用urlparse分析网址中域名的方法
2015/04/15 Python
简单分析Python中用fork()函数生成的子进程
2015/05/04 Python
python结合shell查询google关键词排名的实现代码
2016/02/27 Python
Python实现命令行通讯录实例教程
2016/08/18 Python
1分钟快速生成用于网页内容提取的xslt
2018/02/23 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
HTML5添加鼠标悬浮音响效果不使用FLASH
2014/04/23 HTML / CSS
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
初三化学教学反思
2014/01/23 职场文书
2014年小学元旦活动方案
2014/02/12 职场文书
捐书活动倡议书
2015/04/27 职场文书
2015年车间管理工作总结
2015/07/23 职场文书
python tkinter实现定时关机
2021/04/21 Python
如何自己动手写SQL执行引擎
2021/06/02 MySQL