使用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 相关文章推荐
比较搞笑的js陷阱题
Feb 07 Javascript
模拟jQuery ajax服务器端与客户端通信的代码
Mar 28 Javascript
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
Sep 09 Javascript
SOSO地图JS画出标注和中心点以html形式运行
Aug 09 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
Sep 15 Javascript
小巧强大的jquery layer弹窗弹层插件
Dec 06 Javascript
举例说明JavaScript中的实例对象与原型对象
Mar 11 Javascript
在JavaScript中模拟类(class)及类的继承关系
May 20 Javascript
js实现背景图自适应窗口大小
Jan 10 Javascript
JS改变页面颜色源码分享
Feb 24 Javascript
基于jQuery实现的设置文本区域的光标位置
Jun 15 jQuery
(开源)微信小程序+mqtt,esp8266温湿度读取
Apr 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网站提速三大“软”招
2006/10/09 PHP
解决phpmyadmin中文乱码问题。。。
2007/01/18 PHP
Ajax+PHP边学边练 之五 图片处理
2009/12/03 PHP
PHP 编写大型网站问题集
2010/05/07 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
PHP整合七牛实现上传文件
2015/07/03 PHP
如何使用PHP对网站验证码进行破解
2015/09/17 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
nodejs基础知识
2017/02/03 NodeJs
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
ExtJs的Ext.Ajax.request实现waitMsg等待提示效果
2017/06/14 Javascript
自适应布局meta标签中viewport、content、width、initial-scale、minimum-scale、maximum-scale总结
2017/08/18 Javascript
浅谈Angular路由复用策略
2017/10/04 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
2017/12/27 jQuery
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
详解用js代码触发dom事件的实现方案
2020/06/10 Javascript
深入解析Python中的变量和赋值运算符
2015/10/12 Python
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
对pandas进行数据预处理的实例讲解
2018/04/20 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
django中间键重定向实例方法
2019/11/10 Python
python实现梯度下降法
2020/03/24 Python
Python -m参数原理及使用方法解析
2020/08/21 Python
Vans澳大利亚官网:购买鞋子、服装及配件
2019/09/05 全球购物
11月升旗仪式讲话稿
2014/02/15 职场文书
搞笑的获奖感言
2014/08/16 职场文书
工作推荐信模板
2015/03/25 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
Windows下用Nginx配置https服务器及反向代理的问题
2021/09/25 Servers