使用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 作用域使用说明
Aug 13 Javascript
jquery EasyUI的formatter格式化函数代码
Jan 12 Javascript
jquery获取tr中控件值并操作tr实现思路
Mar 27 Javascript
js创建对象的区别示例介绍
Jul 24 Javascript
使用Sticker.js实现贴纸效果
Jan 28 Javascript
jQuery检测返回值的数据类型
Jul 13 Javascript
jQuery mobile 移动web(4)
Dec 20 Javascript
JavaScript必知必会(五) eval 的使用
Jun 08 Javascript
搭建Bootstrap离线文档的方法
Dec 02 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
Jan 12 Javascript
从零学习node.js之详解异步控制工具async(八)
Feb 27 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
Feb 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
如何使用脚本模仿登陆过程
2006/11/22 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
2011/11/07 PHP
php版微信自定义回复功能示例
2016/12/05 PHP
javascript实现unicode和字符的互相转换
2007/07/18 Javascript
通过 Dom 方法提高 innerHTML 性能
2008/03/26 Javascript
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
js中巧用cssText属性批量操作样式
2011/03/13 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
用nodejs搭建websocket服务器
2017/01/23 NodeJs
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
js实现图片局部放大效果详解
2019/03/18 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
Vue实现导航栏的显示开关控制
2019/11/01 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
[56:41]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs OG
2018/04/01 DOTA
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
Python and、or以及and-or语法总结
2015/04/14 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
python交互模式基础知识点学习
2020/06/18 Python
解释下面关于J2EE的名词
2013/11/15 面试题
前台文员职责范本
2014/03/07 职场文书
乡镇网格化管理实施方案
2014/03/23 职场文书
公休请假条
2014/04/11 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL
javascript canvas实现雨滴效果
2021/06/09 Javascript
Java实现添加条码或二维码到Word文档
2022/06/01 Java/Android
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android