使用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 写的一个简单的timer
Jul 30 Javascript
JavaScript Accessor实现说明
Dec 06 Javascript
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
Sep 21 Javascript
用jquery实现点击栏目背景色改变
Dec 10 Javascript
基于jQuery实现文本框缩放以及上下移动功能
Nov 24 Javascript
jQuery的promise与deferred对象在异步回调中的作用
May 03 Javascript
TableSort.js表格排序插件使用方法详解
Feb 10 Javascript
详解vue.js全局组件和局部组件
Apr 10 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
Oct 25 Javascript
详解vue-admin和后端(flask)分离结合的例子
Feb 12 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
Feb 01 Javascript
原生JavaScript实现拖动校验功能
Sep 29 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中取得image按钮传递的name值
2006/10/09 PHP
BBS(php &amp; mysql)完整版(四)
2006/10/09 PHP
PHP similar_text 字符串的相似性比较函数
2010/05/26 PHP
PHP 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
php加密算法之实现可逆加密算法和解密分享
2014/01/21 PHP
使用php测试硬盘写入速度示例
2014/01/27 PHP
php使用include 和require引入文件的区别
2017/02/16 PHP
对YUI扩展的Gird组件 Part-2
2007/03/10 Javascript
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
js防止表单重复提交的两种方法
2013/09/30 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
2013/11/22 Javascript
node.js中的buffer.toString方法使用说明
2014/12/14 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
2016/10/16 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
AutoJs实现刷宝短视频的思路详解
2020/05/22 Javascript
解决vuex刷新数据消失问题
2020/11/12 Javascript
简单介绍Python中的len()函数的使用
2015/04/07 Python
python 实现求解字符串集的最长公共前缀方法
2018/07/20 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
Python原始套接字编程实例解析
2020/01/29 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
2021/02/03 Python
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
你对IPv6了解程度
2016/02/09 面试题
体育教师工作总结的自我评价
2013/10/10 职场文书
新闻系毕业生推荐信
2013/11/16 职场文书
干部选拔任用方案
2014/05/26 职场文书
售后客服个人自我评价
2014/09/14 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
交流会主持词
2015/07/02 职场文书
周末问候语大全
2015/11/10 职场文书
win10+anaconda安装yolov5的方法及问题解决方案
2021/04/29 Python