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 相关文章推荐
JavaScript类和继承 this属性使用说明
Sep 03 Javascript
JQuery实现的图文自动轮播效果插件
Jun 19 Javascript
深入解析js轮播插件核心代码的实现过程
Apr 14 Javascript
JS实现验证码倒计时的注册页面
Jan 02 Javascript
js保留两位小数方法总结
Jan 31 Javascript
vue.js项目nginx部署教程
Apr 05 Javascript
vue中axios的封装问题(简易版拦截,get,post)
Jun 15 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
Aug 31 Javascript
微信小程序之裁剪图片成圆形的实现代码
Oct 11 Javascript
深入探讨JavaScript的最基本部分之执行上下文
Feb 12 Javascript
jQuery中DOM常见操作实例小结
Aug 01 jQuery
解决vue-router 二级导航默认选中某一选项的问题
Nov 01 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
php数组函数序列之array_combine() - 数组合并函数使用说明
2011/10/29 PHP
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
2012/03/26 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
2016/03/21 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
JavaScript 继承的实现
2009/07/09 Javascript
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
jquery获取当前元素索引值用法实例
2015/06/10 Javascript
基于jQuery实现在线选座之高铁版
2015/08/24 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
解决layer弹层遮罩挡住窗体的问题
2018/08/17 Javascript
小程序指纹验证的实现代码
2018/12/04 Javascript
JavaScript变量提升和严格模式实例分析
2019/01/27 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
[47:42]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python 表达式和语句及for、while循环练习实例
2017/07/07 Python
Python面向对象封装操作案例详解
2019/12/31 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
类的核心特性有哪些
2014/01/01 面试题
建筑文秘专业个人求职信范文
2013/12/28 职场文书
节约粮食标语
2014/06/18 职场文书
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
公安机关正风肃纪剖析材料
2014/10/10 职场文书
走群众路线学习笔记
2014/11/06 职场文书
关于召开会议的通知
2015/04/15 职场文书
2015中秋祝酒词
2015/08/12 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书