如何判断在html中图片加载完毕呢?

  给img图片加onload事件呗。

  如何判断一个界面中所有的图片加载完毕呢?

  给所有的图片加上onload事件呗。

  如果有1000张图片那要怎么绑定事件呢?

  我们用事件冒泡捕获, JS中神奇的事件冒泡捕获, 而且只要给父节点绑定一个事件就好了;(但是这样有个缺点)

  这个是一个很重要的结论:

    经过我的实验, 发现img标签加载成功以后的onload事件不会冒泡到他的父元素, 或者是body节点上。

    但是我们通过addEventListener绑定事件捕获, 可以捕获到img标签加载成功;

  DEMO如下:

<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<div id="div0">
</div>
</body>
<script>
var div0 = document.getElementById("div0");
div0.innerHTML = ' <img src="https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superplus/img/logo_white_ee663702.png" alt=""/> ' +
' <img src="http://static.cnblogs.com/images/logo_small.gif" alt=""/> ' +
' <img src="http://images2015.cnblogs.com/blog/420264/201511/420264-20151104130547883-1797298825.gif" alt=""/>';
div0.addEventListener("load", function(ev) {
ev = ev || window.event;
console.log("图片加载成功");
console.log( ev.target );
       //很多事情可以在这边实现了,目前又有一张图片加载成功了
},true)
</script>
</html>

  使用addEventLitener 绑定事件一定要最后一个参数, true

    

   经过测试audio和video的onload事件使用同样代码我们无法捕获到,DEMO如下;

<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<div id="div1">
</div>
</body>
<script>var div1 = document.getElementById("div1");
div1.innerHTML = '<audio src="http://www.w3school.com.cn/i/horse.ogg" controls="controls"> Your browser does not support the audio element. </audio> '+
'<video src="http://www.w3school.com.cn/i/movie.ogg" width="320" height="240" controls="controls">Your browser does not support the video tag. </video>';
div1.addEventListener("load",function(ev) {
ev = ev || window.event;
console.log("音频加载成功");
console.log( ev.target );
},true)
</script>
</html>

   因为img标签加载成功是只有捕获阶段, 没有冒泡阶段,为什么呢?

   个人理解 , 如果img标签的onload事件会冒泡的话,那么给window或者document添加的onload事件就会多次执行, 所以冒泡事件是针对于onclick, onmosueover等用户层面的行为,但是捕获的话可以捕获到浏览器或者用户的事件!~。~!

  为什么监听img元素是否加载完毕呢? 他的使用场景是什么样的呢?

  我在项目中某些html页面使用了iframe, 这个iframe的高度是根据内部内容自动设置的, 所以要等到window.onload以后才能给能外部的iframe设置高度, 或者在DOM中每一张图片加载完毕以后同步设置外部iframe的高度;

  使用addEventLitener 的缺点是,IE8和IE8以下的浏览器不支持,所以还是给那1000张图片一个个加onload事件吧....

作者: NONO
出处:http://www.cnblogs.com/diligenceday/

QQ:287101329

使用事件捕获实时捕获img是否加载完毕, 实现iframe内容高度自动适应的更多相关文章

  1. JavaScript在A页面判断B页面加载完毕(iframe load)

    今天遇到一个需求,在A页面上判断B页面是否加载完毕(B页面是第三方页面),加载完毕时隐藏loading动画... 而平时我们一般做的事是在B页面上判断B页面是否加载完毕,进行操作. if(docume ...

  2. spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)转

    关键字:spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) 应用场景:很多时候我们想要在某个类加载完毕时干某件事情,但是使用了spring管理对象,我们这个类引用 ...

  3. Duilib中Webbrowser事件完善使其支持判断页面加载完毕

    在多iframe的页面中,需要结合DISPID_DOCUMENTCOMPLETE和DISPID_NAVIGATECOMPLETE2两个事件判断页面是否加载完毕,而duilib中没有提供对DISPID_ ...

  4. 深入理解DOM事件类型系列第六篇——加载事件

    前面的话 提到加载事件,可能想到了window.onload,但实际上,加载事件是一大类事件,本文将详细介绍加载事件 load load事件是最常用的一个事件,当页面完全加载后(包括所有图像.java ...

  5. 用window的onload事件,窗体加载完毕的时候

    <script type="text/javascript"> //用window的onload事件,窗体加载完毕的时候 window.onload=function( ...

  6. jq常用事件(on,blur,focus,change),js/jq等待图片(页面)加载完毕事件,js读取文件

    jq常用事件(on,blur,focus,change) // 方法一(推荐) $('.box').on( "click",function() {} ) $('.box').on ...

  7. spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件)

    关键字:spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) 应用场景:很多时候我们想要在某个类加载完毕时干某件事情,但是使用了spring管理对象,我们这个类引用 ...

  8. 铵钮提交事件PostBack之后,一些动态加载的物件丢失

    今早起来,发现skype有网友留言,情况大约如下,不过Insus.NET还是先感谢网友的测试.http://www.cnblogs.com/insus/p/3193619.html  如果你有看此篇博 ...

  9. jQuery页面加载完毕事件及jQuery与JavaScript的比较

    1.jQuery概述 jQuery是一个JavaScript库,它集成了JavaScript.DOM.CSS和Ajax,简化了JavaScript编程,提倡write less, do more. 2 ...

随机推荐

  1. 第一天接触Orchard

    第一天接触Orchard 为什么要研究Orchard 呢? 楼主是因为要研究下最新的ASP.NET技术, Orchard 用的人多,历史也比较久,算是老牌了 再就是中文资料比较多,Orchard 有中 ...

  2. HTML5 WebSocket 技术介绍

    WebSocket是html5规范新引入的功能,用于解决浏览器与后台服务器双向通讯的问题,使用WebSocket技术,后台可以随时向前端推送消息,以保证前后台状态统一,在传统的无状态HTTP协议中,这 ...

  3. JVM的垃圾回收机制详解和调优

    JVM的垃圾回收机制详解和调优 gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存.java语言并不要求jvm有gc,也没有规定gc如何工作.不过常用的jvm都有gc,而且大多数gc都 ...

  4. [No000066]python各种类型转换-int,str,char,float,ord,hex,oct等

    int(x [,base ]) #将x转换为一个整数 long(x [,base ]) #将x转换为一个长整数 float(x ) #将x转换到一个浮点数 complex(real [,imag ]) ...

  5. eclipse大括号高亮显示---颜色很淡,改为显眼的颜色

    window -> preferences -> java(or c++)-> editor -> matching brackets highight, color改为红色

  6. RecyclerView,CardView导入和使用(Demo)

    简介: 这篇文章是ANDROID L——Material Design详解(UI控件)的一个补充或者说是应用实例,如果有时间建议大家稍微浏览一下上篇文章. 本文主要介绍Android L新增加的两个U ...

  7. HTML标签用法

    <!DOCTYPE> 声明必须位于 <html> 标签之前.它不是 HTML 标签:它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令. 信息输入标签:in ...

  8. matrix-tree

    学一发matrix-tree 原来bzoj1016这题是暴搜+玄学并查集过的-数据弱怪我咯 首先matrix-tree需要度数矩阵D,就是说当i=j时D[i][j]为i的度数,否则为0. 还有邻接矩阵 ...

  9. apt-get update更新源时,出现“Hash Sum mismatch”问题

    当使用apt-get update更新源时,出现下面"Hash Sum mismatch"的报错,具体如下:root@localhost:~# apt-get update.... ...

  10. Android-完全退出当前应用程序的四种方法

    Android程序有很多Activity,比如说主窗口A,调用了子窗口B,如果在B中直接finish(), 接下里显示的是A.在B中如何关闭整个Android应用程序呢?本人总结了几种比较简单的实现方 ...