img onload事件绑定各浏览器均可执行


Posted in Javascript onDecember 19, 2012

在需要对img进行onload事件绑定的时候,一般大家都会想到用常规的方法进行事件绑定,如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>img onload事件绑定(错误用法)</title> 
<script type='text/javascript'> 
window.onload = function(){ 
var img = document.getElementById('imgId'); 
img.onload = function(){ 
alert(1); 
}; 
}; 
</script> 
</head> 
<body> 
<img src='images/06.jpg' id='imgId'/> 
</body> 
</html>

此时大家会发现alert(1)并没有执行,这是什么原因呢?特别是在ie和ff浏览器下。
而且在用到jquery插件库的时候会发现,alert除了在ie和Opera浏览器不弹出来外,其他浏览器均弹出来,这是为什么呢?!
主要是window.onload事件是在页面dom元素加载完后执行,也就包括了img图片中src加载完成。那么img.onload 就不会执行了,
因为其是监听img的src是否加载完成。
那么,如何对img图片进行onload事件绑定呢?具体代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>img onload事件绑定(正确用法)</title> 
<script type='text/javascript'> 
window.onload = function(){ 
var img = document.getElementById('imgId'); 
var src = img.getAttribute('src'); 
img.setAttribute('src',''); 
img.onload = function(){ 
alert(1); 
}; 
img.setAttribute('src',src); 
}; 
</script> 
</head> 
<body> 
<img src='images/06.jpg' id='imgId'/> 
</body> 
</html>

这种方法,在各浏览器下均执行alert(1)。
也就是在页面dom元素加载完成后,获得img的dom对象,获得其src属性,再将其src设置为‘'空,然后监听img的onload事件,最后再设置img的src属性即可。
Javascript 相关文章推荐
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
Dec 07 Javascript
angular仿支付宝密码框输入效果
Mar 25 Javascript
解决AngualrJS页面刷新导致异常显示问题
Apr 20 Javascript
原生js实现密码输入框值的显示隐藏
Jul 17 Javascript
浅谈Express异步进化史
Sep 09 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
Sep 01 Javascript
详解用async/await来处理异步
Aug 28 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
Oct 15 Javascript
微信小程序实现按字母排列选择城市功能
Nov 25 Javascript
js实现双色球效果
Aug 02 Javascript
浅析JavaScript预编译和暗示全局变量
Sep 03 Javascript
JavaScript仿京东轮播图效果
Feb 25 Javascript
JavaScript实现快速排序(自已编写)
Dec 19 #Javascript
js 使用form表单select类实现级联菜单效果
Dec 19 #Javascript
JS限制上传图片大小不使用控件在本地实现
Dec 19 #Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
Dec 19 #Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
Dec 19 #Javascript
ajax java 实现自动完成功能
Dec 19 #Javascript
JavaScript字符串String和Array操作的有趣方法
Dec 18 #Javascript
You might like
php md5下16位和32位的实现代码
2008/04/09 PHP
php循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
php实现文件下载(支持中文文名)
2013/12/04 PHP
php绘制圆形的方法
2015/01/24 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
jQuery Select(单选) 模拟插件 V1.3.62 改进版
2010/07/17 Javascript
JS时间选择器 兼容IE6,7,8,9
2012/06/26 Javascript
jquery判断浏览器类型的代码
2012/11/05 Javascript
jquery简单实现鼠标经过导航条改变背景图
2013/12/17 Javascript
7个JS基础知识总结
2014/03/05 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
JQuery节点元素属性操作方法
2015/06/11 Javascript
AngularJS自定义控件实例详解
2016/12/13 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
2016/12/26 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
请求时token过期自动刷新token操作
2020/09/11 Javascript
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
python3抓取中文网页的方法
2015/07/28 Python
python实现公司年会抽奖程序
2019/01/22 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
用python写一个定时提醒程序的实现代码
2019/07/22 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
Django用户认证系统如何实现自定义
2020/11/12 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
主办会计岗位职责
2014/03/13 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
煤矿安全演讲稿
2014/05/09 职场文书
领导干部贪图享乐整改措施
2014/09/21 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
Pytorch中的数据集划分&正则化方法
2021/05/27 Python
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL
delete in子查询不走索引问题分析
2022/07/07 MySQL