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 相关文章推荐
读jQuery之四(优雅的迭代)
Jun 20 Javascript
javascipt基础内容--需要注意的细节
Apr 10 Javascript
在父页面调用子页面的JS方法
Sep 29 Javascript
如何使用jquery修改css中带有!important的样式属性
Apr 28 Javascript
浅谈window.onbeforeunload() 事件调用ajax
Jun 29 Javascript
详解angularJs模块ui-router之状态嵌套和视图嵌套
Apr 28 Javascript
原生JS实现图片懒加载(lazyload)实例
Jun 13 Javascript
微信小程序中setInterval的使用方法
Sep 29 Javascript
JavaScript框架Angular和React深度对比
Nov 20 Javascript
jQuery实现所有验证通过方可提交的表单验证
Nov 21 jQuery
vue中本地静态图片路径写法
Mar 06 Javascript
详解VUE单页应用骨架屏方案
Jan 17 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
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
通过jquery实现tab标签浏览效果
2007/02/20 Javascript
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
2010/05/27 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
用js模拟struts2的多action调用示例
2014/05/19 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
vue脚手架搭建项目的兼容性配置详解
2018/07/17 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
JS实现多选框的操作
2020/06/24 Javascript
vue+elementUI实现简单日历功能
2020/09/24 Javascript
python编写弹球游戏的实现代码
2018/03/12 Python
对python捕获ctrl+c手工中断程序的两种方法详解
2018/12/26 Python
Python实现的爬取小说爬虫功能示例
2019/03/30 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
Pytorch中Tensor与各种图像格式的相互转化详解
2019/12/26 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
python中@property的作用和getter setter的解释
2020/12/22 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
css3实现3D色子翻转特效
2014/12/23 HTML / CSS
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
自学考试自我鉴定范文
2013/09/26 职场文书
关爱留守儿童标语
2014/06/18 职场文书
民事授权委托书范文
2014/08/02 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
小学生安全教育广播稿
2014/10/20 职场文书
见习报告怎么写
2014/10/31 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
员工辞职信范文
2015/03/02 职场文书
社区重阳节活动总结
2015/03/24 职场文书
张思德观后感
2015/06/09 职场文书
基于Python实现流星雨效果的绘制
2022/03/18 Python