使用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 学习之旅 (1)
Feb 05 Javascript
动态添加option及createElement使用示例
Jan 26 Javascript
JS控制网页动态生成任意行列数表格的方法
Mar 09 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
Feb 14 Javascript
浏览器兼容的JS写法总结
Apr 27 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
Dec 27 Javascript
JavaScript使用Ajax上传文件的示例代码
Aug 10 Javascript
JS中判断某个字符串是否包含另一个字符串的五种方法
May 03 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
Sep 26 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
Jun 11 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
Sep 24 Javascript
JavaScript实现音乐导航效果
Nov 19 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字符串中的单引号为双引号的方法
2017/02/16 PHP
创建无限极分类树型结构的简单方法
2017/06/20 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
2019/09/16 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
2020/10/30 PHP
面向对象的编程思想在javascript中的运用上部
2009/11/20 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
基于jquery的图片的切换(以数字的形式)
2011/02/14 Javascript
jQuery操作select下拉框的text值和value值的方法
2014/05/31 Javascript
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
js焦点文字滚动效果代码分享
2015/08/25 Javascript
基于JS代码实现导航条弹出式悬浮菜单
2016/06/17 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
JS实现的简单四则运算计算器功能示例
2017/09/27 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
2018/02/12 jQuery
node中的密码安全(加密)
2018/09/17 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
koa2+vue实现登陆及登录状态判断
2019/08/15 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
[47:03]Ti4第二日主赛事败者组 LGD vs iG 2
2014/07/21 DOTA
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
python list语法学习(带例子)
2013/11/01 Python
Python类的动态修改的实例方法
2017/03/24 Python
Python制作刷网页流量工具
2017/04/23 Python
Python网络编程 Python套接字编程
2017/09/13 Python
python tensorflow基于cnn实现手写数字识别
2018/01/01 Python
Python对列表的操作知识点详解
2019/08/20 Python
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
幼儿园中班开学寄语
2014/04/03 职场文书
2014年清明节寄语
2014/04/03 职场文书
党员教师批评与自我批评发言稿
2014/10/15 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
JS ES6异步解决方案
2021/04/29 Javascript