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 插件学习实例1 插件制作说明与tableUI优化
Apr 02 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
Oct 09 Javascript
JS之Date对象和获取系统当前时间详解
Jan 13 Javascript
Javascript玩转继承(三)
May 08 Javascript
基于JavaScript实现随机颜色输入框
Dec 10 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
May 17 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
Mar 28 jQuery
vue-router 手势滑动触发返回功能
Sep 30 Javascript
TypeScript开发Node.js程序的方法
Apr 30 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
Mar 06 Javascript
微信小程序实现带放大效果的轮播图
May 26 Javascript
Javascript执行上下文顺序的深入讲解
Nov 04 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和XSL stylesheets转换XML文档
2006/10/09 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
php封装的验证码类分享
2017/02/26 PHP
双击滚屏-常用推荐
2006/11/29 Javascript
可以文本显示的公告栏的js代码
2007/03/11 Javascript
Packer 3.0 JS压缩及混淆工具 下载
2007/05/03 Javascript
javascript 日期常用的方法
2009/11/11 Javascript
JS 自定义函数缺省值的设置方法
2010/05/05 Javascript
20个非常棒的 jQuery 幻灯片插件和教程分享
2011/08/23 Javascript
浅谈jquery中next与siblings的区别
2016/10/27 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
JS解决position:sticky的兼容性问题的方法
2017/10/17 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
JS弹窗 JS弹出DIV并使整个页面背景变暗功能的实现代码
2018/04/21 Javascript
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
利用Python批量生成任意尺寸的图片
2016/08/29 Python
python实现雪花飘落效果实例讲解
2019/06/18 Python
python 消费 kafka 数据教程
2019/12/21 Python
Python3搭建http服务器的实现代码
2020/02/11 Python
获取CSDN文章内容并转换为markdown文本的python
2020/09/06 Python
详解Anaconda 的安装教程
2020/09/23 Python
为世界各地的女性设计和生产时尚服装:ROMWE
2016/09/17 全球购物
《莫高窟》教学反思
2014/02/25 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
年底个人总结范文
2015/03/10 职场文书
大学生实习推荐信
2015/03/27 职场文书
阿甘正传观后感
2015/06/01 职场文书
学术会议领导致辞
2015/07/29 职场文书
机关干部作风整顿心得体会
2016/01/22 职场文书
Python 多线程处理任务实例
2021/11/07 Python
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL