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 相关文章推荐
利用腾讯的ip地址库做ip物理地址定位
Jul 24 Javascript
jquery插件之easing使用
Aug 19 Javascript
jquery 插件开发备注
Aug 27 Javascript
基于jquery完美拖拽,可返回拖动轨迹
Mar 29 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
May 03 Javascript
JavaScript中逗号运算符介绍及使用示例
Mar 13 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
Jan 25 Javascript
JS实现的判断方法、变量是否存在功能示例
Mar 28 Javascript
Vue使用Proxy监听所有接口状态的方法实现
Jun 07 Javascript
Vue.js中的extend绑定节点并显示的方法
Jun 20 Javascript
Vue3.0 响应式系统源码逐行分析讲解
Oct 14 Javascript
如何封装Vue Element的table表格组件
Feb 06 Vue.js
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
html中select语句读取mysql表中内容
2006/10/09 PHP
Eclipse的PHP插件PHPEclipse安装和使用
2014/07/20 PHP
10条php编程小技巧
2015/07/07 PHP
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
php compact 通过变量创建数组
2016/11/15 PHP
编写自己的jQuery插件简单实现代码
2011/04/19 Javascript
javascript插入样式实现代码
2012/02/22 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
2013/05/17 Javascript
JS实现点击颜色块切换指定区域背景颜色的方法
2015/02/25 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
2015/09/17 Javascript
jquery自定义表格样式
2015/11/23 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
深入理解ES7的async/await的用法
2017/09/09 Javascript
使用webpack搭建pixi.js开发环境
2020/02/12 Javascript
[03:16]DOTA2完美大师赛小组赛精彩集锦
2017/11/22 DOTA
python matplotlib画图实例代码分享
2017/12/27 Python
解决python3 urllib 链接中有中文的问题
2018/07/16 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
Python使用type动态创建类操作示例
2020/02/29 Python
Python object类中的特殊方法代码讲解
2020/03/06 Python
python try...finally...的实现方法
2020/11/25 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
HTML5超炫酷粒子效果的进度条的实现示例
2019/08/23 HTML / CSS
车库门开启器、遥控器和零件:Chamberlain
2019/04/09 全球购物
公司运动会策划方案
2014/05/25 职场文书
假面舞会策划方案
2014/05/29 职场文书
赔偿协议书
2015/01/27 职场文书
部队个人年终总结
2015/03/02 职场文书
2015年小学语文教学工作总结
2015/05/25 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书
浅谈Python数学建模之数据导入
2021/06/23 Python