使用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读取xml
Nov 04 Javascript
jquery插件 cluetip 关键词注释
Jan 12 Javascript
JavaScript 语言基础知识点总结(思维导图)
Nov 10 Javascript
JS根据变量保存方法名并执行方法示例
Apr 04 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
Jun 05 Javascript
百度地图给map添加右键菜单(判断是否为marker)
Mar 04 Javascript
js上下视差滚动简单实现代码
Mar 07 Javascript
JS原生带缩略图的图片切换效果
Oct 10 Javascript
详解Vue.js v-for不支持IE9的解决方法
Dec 29 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
Aug 28 Javascript
JS使用setInterval计时器实现挑战10秒
Nov 08 Javascript
通过实例解析js可枚举属性与不可枚举属性
Dec 02 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
PHP的FTP学习(二)[转自奥索]
2006/10/09 PHP
PHP 裁剪图片成固定大小代码方法
2009/09/09 PHP
php 修改上传文件大小限制实例详解
2016/10/23 PHP
php 使用redis锁限制并发访问类示例
2016/11/02 PHP
javascript 点击整页变灰的效果(可做退出效果)。
2008/01/09 Javascript
判断脚本加载是否完成的方法
2009/05/26 Javascript
javaScript parseInt字符转化为数字函数使用小结
2009/11/05 Javascript
javascript模拟实现C# String.format函数功能代码
2013/11/25 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
2016/07/07 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
使用puppeteer破解极验的滑动验证码
2018/02/24 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
vue-router之实现导航切换过渡动画效果
2019/10/31 Javascript
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
python下载图片实现方法(超简单)
2017/07/21 Python
Python 实现使用dict 创建二维数据、DataFrame
2018/04/13 Python
由面试题加深对Django的认识理解
2019/07/19 Python
python程序中的线程操作 concurrent模块使用详解
2019/09/23 Python
对python中 math模块下 atan 和 atan2的区别详解
2020/01/17 Python
Python 批量读取文件中指定字符的实现
2020/03/06 Python
OpenCV Python实现拼图小游戏
2020/03/23 Python
python如何进行矩阵运算
2020/06/05 Python
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
初一英语教学反思
2014/01/11 职场文书
入党团支部推荐意见
2015/06/02 职场文书
队列队形口号
2015/12/25 职场文书
竞聘书的秘诀
2019/04/02 职场文书
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis
如何开发一个渐进式Web应用程序PWA
2021/05/10 Javascript
浅谈Redis的几个过期策略
2021/05/27 Redis
vue判断按钮是否可以点击
2022/04/09 Vue.js