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 Chart 插件整理
Jun 18 Javascript
jQuery中dequeue()方法用法实例
Dec 29 Javascript
Bootstrap3学习笔记(二)之排版
May 20 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
Jul 05 Javascript
React Native仿美团下拉菜单的实例代码
Aug 08 Javascript
Angular项目从新建、打包到nginx部署全过程记录
Dec 09 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
Feb 28 jQuery
详解基于原生JS验证表单组件xy-form
Aug 20 Javascript
微信小程序实现滑动翻页效果(完整代码)
Dec 06 Javascript
js实现无限层级树形数据结构(创新算法)
Feb 27 Javascript
关于angular浏览器兼容性问题的解决方案
Jul 26 Javascript
JavaScript实现简单验证码
Aug 24 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 IP转换整形(ip2long)的详解
2013/06/06 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
2014/05/09 PHP
提高php编程效率技巧
2015/08/13 PHP
PHP判断字符串长度的两种方法很实用
2015/09/22 PHP
学习ExtJS 访问容器对象
2009/10/07 Javascript
js简单实现用户注册信息的校验代码
2013/11/15 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
Juery解决tablesorter中文排序和字符范围的方法
2015/05/06 Javascript
jQuery实现图片加载完成后改变图片大小的方法
2016/03/29 Javascript
非常漂亮的相册集 使用jquery制作相册集
2016/04/28 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
2017/03/10 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
2017/10/27 jQuery
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
微信小程序下拉框组件使用方法详解
2018/12/28 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
[57:36]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第三场 2月1日
2021/03/11 DOTA
Python操作Redis之设置key的过期时间实例代码
2018/01/25 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
2018/08/01 Python
python实现kmp算法的实例代码
2019/04/03 Python
python 爬取学信网登录页面的例子
2019/08/13 Python
Numpy的简单用法小结
2019/08/28 Python
基于python操作ES实例详解
2019/11/16 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
2021/02/06 Python
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
韩国流行时尚女装网站:Dintchina(中文)
2018/07/19 全球购物
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
新闻网站实习自我鉴定
2013/09/25 职场文书
工商管理专业大学生职业生涯规划范文
2014/03/09 职场文书
文化产业实施方案
2014/06/07 职场文书