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 学习历程和心得分享
Dec 12 Javascript
Node.js编程中客户端Session的使用详解
Jun 23 Javascript
利用jQuery及AJAX技术定时更新GridView的某一列数据
Dec 04 Javascript
JavaScript地理位置信息API
Jun 11 Javascript
JavaScript随机生成颜色的方法
Oct 15 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
Apr 18 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
Jun 19 Javascript
jQuery实现简单的下拉菜单导航功能示例
Dec 07 jQuery
JavaScript实现JSON合并操作示例【递归深度合并】
Sep 07 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
Nov 10 Javascript
js实现跟随鼠标移动的小球
Aug 26 Javascript
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
Sep 27 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
isset和empty的区别
2007/01/15 PHP
PHP统计二维数组元素个数的方法
2013/11/12 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
传递参数的标准方法(jQuery.ajax)
2008/11/19 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
2020/10/30 Javascript
[10:54]Team Spirit vs Navi
2018/06/07 DOTA
python中将字典转换成其json字符串
2014/07/16 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
python求平均数、方差、中位数的例子
2019/08/22 Python
如何使用Python脚本实现文件拷贝
2019/11/20 Python
瑞士灯具购物网站:Lampenwelt.ch
2018/07/08 全球购物
成考报名单位证明范本
2014/01/16 职场文书
社团活动总结格式
2014/08/29 职场文书
幼儿园教师师德师风演讲稿:我自豪我是一名幼师
2014/09/10 职场文书
法院授权委托书格式
2014/09/28 职场文书
出差报告格式模板
2014/11/06 职场文书
2014幼儿园家长工作总结
2014/11/10 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
找规律教学反思
2016/02/23 职场文书
Python连续赋值需要注意的一些问题
2021/06/03 Python
十大好看的穿越动漫排名:《瑞克和莫蒂》第一,国漫《有药》在榜
2022/03/18 日漫
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android
Win10本地连接不见了怎么恢复? win10系统电脑本地连接不见了解决方法
2023/01/09 数码科技