使用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 数组的方法集合
Jun 05 Javascript
基于jQuery实现下拉收缩(展开与折叠)特效
Dec 25 Javascript
JavaScript中的this关键字使用详解
Aug 14 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
Dec 03 Javascript
JS回调函数简单用法示例
Feb 09 Javascript
JS传参及动态修改页面布局
Apr 13 Javascript
JavaScript生成指定范围随机数和随机序列的方法
May 05 Javascript
Vue2.0生命周期的理解
Aug 20 Javascript
Vue 框架之键盘事件、健值修饰符、双向数据绑定
Nov 14 Javascript
vue项目设置scrollTop不起作用(总结)
Dec 21 Javascript
使用Phantomjs和Node完成网页的截屏快照的方法
Jul 16 Javascript
vue 防止页面加载时看到花括号的解决操作
Nov 09 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
用PHP查询搜索引擎排名位置的代码
2010/01/05 PHP
奇怪的PHP引用效率问题分析
2012/03/23 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
CodeIgniter生成静态页的方法
2016/05/17 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
2007/01/22 Javascript
传智播客学习之java 反射
2009/11/22 Javascript
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
js实现简单的验证码
2015/12/25 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
nodejs加密Crypto的实例代码
2016/07/07 NodeJs
基于JavaScript实现全选、不选和反选效果
2017/02/15 Javascript
vue中如何使用ztree
2018/02/06 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
详解vue-router 动态路由下子页面多页共活的解决方案
2019/12/22 Javascript
VsCode里的Vue模板的实现
2020/08/12 Javascript
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
[04:16]DOTA2全国高校联赛16强抽签
2018/05/02 DOTA
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
2019/07/03 Python
利用python求积分的实例
2019/07/03 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
2019/10/18 Python
会计自我鉴定范文
2013/10/06 职场文书
《唯一的听众》教学反思
2014/02/20 职场文书
给校长的建议书300字
2014/05/16 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
初三学生语文考试作弊检讨书
2014/12/14 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
15个值得收藏的JavaScript函数
2021/09/15 Javascript