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 cookie插件代码类
May 26 Javascript
js对table的td进行相同内容合并示例详解
Dec 27 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
Mar 18 Javascript
jquery浏览器滚动加载技术实现方案
Jun 03 Javascript
jQuery实现冻结表格行和列
Apr 29 Javascript
JavaScript 封装一个tab效果源码分享
Sep 15 Javascript
javascript实现起伏的水波背景效果
May 16 Javascript
JS简单实现浮动窗口效果示例
Sep 07 Javascript
vue实现一个炫酷的日历组件
Oct 08 Javascript
使用微信小程序开发弹出框应用实例详解
Oct 18 Javascript
Bootstrap 按钮样式与使用代码详解
Dec 09 Javascript
浅谈VUE中演示v-for为什么要加key
Jan 16 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
珊瑚虫IP库浅析
2007/02/15 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
PHP扩展开发入门教程
2015/02/26 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
jQuery的12招常用技巧分享
2011/08/08 Javascript
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
json属性名为什么要双引号(个人猜测)
2014/07/31 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
jquery使用EasyUI Tree异步加载JSON数据(生成树)
2017/02/11 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
[01:11:27]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Optic
2018/04/03 DOTA
[57:53]Secret vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python冒泡排序简单实现方法
2015/07/09 Python
在Python中定义和使用抽象类的方法
2016/06/30 Python
Python中利用xpath解析HTML的方法
2018/05/14 Python
Python unittest单元测试框架总结
2018/09/08 Python
python后端接收前端回传的文件方法
2019/01/02 Python
WxPython实现无边框界面
2019/11/18 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
初中三年学生的学习自我评价
2013/11/13 职场文书
申报职称专业技术个人的自我评价
2013/12/12 职场文书
亮化工程实施方案
2014/03/17 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫
python 实现图片特效处理
2022/04/03 Python
Java工作中实用的代码优化技巧分享
2022/04/21 Java/Android
利用Redis实现点赞功能的示例代码
2022/06/28 Redis