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 function代码
May 23 Javascript
javascript 面向对象编程基础:封装
Aug 21 Javascript
当json键为数字时的取值方法解析
Nov 15 Javascript
简介JavaScript中Math.cos()余弦方法的使用
Jun 15 Javascript
jQuery实现图片走马灯效果的原理分析
Jan 16 Javascript
jQuery设置和获取select、checkbox、radio的选中值方法
Jan 01 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
Jan 08 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
Mar 25 Javascript
动态加载权限管理模块中的Vue组件
Jan 16 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
Jan 20 Javascript
node后端服务保活的实现
Nov 10 Javascript
小程序跨页面交互的作用与方法详解
Jan 07 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常用的url处理函数总结
2014/11/19 PHP
php生成年月日下载列表的方法
2015/04/24 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
js 编程笔记 无名函数
2011/06/28 Javascript
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
2013/10/24 Javascript
jquery ajax 简单范例(界面+后台)
2013/11/19 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
推荐6款基于jQuery实现图片效果插件
2014/12/07 Javascript
jQuery中live()方法用法实例
2015/01/19 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
jquery 多个radio的click事件实例
2016/12/03 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
深入浅析AngularJS中的一次性数据绑定 (bindonce)
2017/05/11 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
node.js基础知识小结
2018/02/26 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
python os模块简单应用示例
2019/05/23 Python
python django生成迁移文件的实例
2019/08/31 Python
详解Python3 pickle模块用法
2019/09/16 Python
python做接口测试的必要性
2019/11/20 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
2020/02/26 Python
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
Otel.com:折扣酒店预订
2017/08/24 全球购物
Linux Interview Questions For software testers
2012/06/02 面试题
销售口号大全
2014/06/11 职场文书
初中学习计划书范文
2014/09/15 职场文书
迎新生欢迎词
2015/01/23 职场文书
横店影视城导游词
2015/02/06 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书
【2·13】一图读懂中国无线电发展
2022/02/18 无线电