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 相关文章推荐
Ajax 数据请求的简单分析
Apr 05 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
Apr 27 Javascript
基于JQuery的抓取博客园首页RSS的代码
Dec 01 Javascript
JS加jquery简单实现标签元素的显示或隐藏
Sep 23 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
Mar 30 Javascript
使用jquery如何获取时间
Oct 13 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
Oct 26 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
Nov 21 Javascript
vue实现引入本地json的方法分析
Jul 12 Javascript
vue2.0 + ele的循环表单及验证字段方法
Sep 18 Javascript
回顾Javascript React基础
Jun 15 Javascript
vue2和vue3的v-if与v-for优先级对比学习
Oct 10 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 socke 向指定页面提交数据
2008/07/23 PHP
PHP 函数语法介绍一
2009/06/14 PHP
推荐25款php中非常有用的类库
2014/09/29 PHP
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
JavaScript实现重置表单(reset)的方法
2015/04/02 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
javascript随机显示背景图片的方法
2015/06/18 Javascript
JavaScript实现将数组数据添加到Select下拉框的方法
2015/08/21 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
2017/02/20 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
jQuery实现广告条滚动效果
2017/08/22 jQuery
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
详解node.js 下载图片的 2 种方式
2018/03/02 Javascript
50行代码实现贪吃蛇(具体思路及代码)
2013/04/27 Python
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
深入理解NumPy简明教程---数组3(组合)
2016/12/17 Python
python Pygame的具体使用讲解
2017/11/03 Python
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
python numpy 按行归一化的实例
2019/01/21 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
python matplotlib绘制三维图的示例
2020/09/24 Python
意大利奢侈品综合电商网站:MODES
2019/12/14 全球购物
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
前台领班岗位职责
2013/12/04 职场文书
简单的辞职信范文
2014/01/18 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
迎新生欢迎词
2015/01/23 职场文书
工程部文员岗位职责
2015/02/04 职场文书
幼儿园安全教育随笔
2015/08/14 职场文书
职场干货:简历中的自我评价应该这样写!
2019/05/06 职场文书