JavaScript怎么判断图片是否加载完成以便获取其尺寸


Posted in Javascript onMay 08, 2014

有时需要获取图片的尺寸,这需要在图片加载完成以后才可以,求方法?

一、load事件

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>img - load event</title> 
</head> 
<body> 
<img id="img1" src="http://pic1.xxx.com/wall/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.xxx.com/wall/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.xxx.com/wall/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 相关文章推荐
10个新的最有前途的JavaScript框架
Mar 12 Javascript
js的2种继承方式详解
Mar 04 Javascript
JavaScript操作XML文件之XML读取方法
Jun 09 Javascript
老生常谈的跨域处理
Jan 11 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
Jun 12 jQuery
详解webpack介绍&amp;安装&amp;常用命令
Jun 29 Javascript
ReactNative之键盘Keyboard的弹出与消失示例
Jul 11 Javascript
VuePress 静态网站生成方法步骤
Feb 14 Javascript
小程序scroll-view安卓机隐藏横向滚动条的实现详解
May 16 Javascript
js获取 gif 的帧数的代码实例
Sep 10 Javascript
js正则匹配多个全部数据问题
Dec 20 Javascript
javascript对象3个属性特征
Nov 17 Javascript
js动态删除div元素基本思路及实现代码
May 08 #Javascript
JS的encodeURI和java的URLDecoder.decode使用介绍
May 08 #Javascript
jquery查找tr td 示例模拟
May 08 #Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
May 08 #Javascript
JavaScript二维数组实现的省市联动菜单
May 08 #Javascript
javascript中setTimeout的问题解决方法
May 08 #Javascript
在JavaScript中使用timer示例
May 08 #Javascript
You might like
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
Date对象格式化函数代码
2010/07/17 Javascript
jquery中实现标签切换效果的代码
2011/03/01 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
2013/10/25 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
简单谈谈Vue 模板各类数据绑定
2016/09/25 Javascript
详解Angular的双向数据绑定(MV-VM)
2016/12/26 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
荐书|您有一份JavaScript书单待签收
2017/07/21 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
JavaScript中重名的函数与对象示例详析
2017/09/28 Javascript
dts文件中删除一个node或属性的操作方法
2018/08/05 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
2019/03/20 Javascript
javascript合并两个数组最简单的实现方法
2019/09/14 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
一些常用的Python爬虫技巧汇总
2016/09/28 Python
Go/Python/Erlang编程语言对比分析及示例代码
2018/04/23 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
python温度转换华氏温度实现代码
2020/12/06 Python
英国最大的经认证的有机超市:Planet Organic
2018/02/02 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
30岁生日感言
2014/01/25 职场文书
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
中文专业求职信
2014/06/20 职场文书
小学综合实践活动总结
2014/07/07 职场文书
四风批评与自我批评发言稿
2014/10/14 职场文书
作文评语怎么写
2014/12/25 职场文书
第一书记观后感
2015/06/08 职场文书
java实现面板之间切换功能
2022/06/10 Java/Android
JavaScript实现九宫格拖拽效果
2022/06/28 Javascript