基于JS判断iframe是否加载成功的方法(多种浏览器)


Posted in Javascript onMay 13, 2016

推荐阅读:

在项目中经常要动态添加iframe,然后再对添加的iframe进行相关操作,而往往iframe还没添加完呢,后边的代码就已经执行完了,所以有些你写的东西根本没有显示出来。这时,我们就要考虑是否可以等iframe加载完后再执行后边的操作,当然,各种浏览器早就为我们考虑到啦,看下面:

ie浏览器

IE的每个elem节点都会拥有一个onreadystatechange事件,这个事件每次在elem内容发送变化的时候触发,比如内容正在载入loading会触发,内容载入完毕loaded会触发,内容载入成功complete会触发,这个函数还需要配合readyState,这是ie上每个elem都拥有的属性,用来查看每次触发时候的状态。

//先为iframe 添加一个 onreadystatechange
iframe.attachEvent("onreadystatechange", function(){
//此事件在内容没有被载入时候也会被触发,所以我们要判断状态
//有时候会比较怪异 readyState状态会跳过 complete 所以我们loaded状态也要判断
if(iframe.readyState === "complete" || iframe.readyState == "loaded"){
//代码能执行到这里说明已经载入成功完毕了
//要清除掉事件
iframe.detachEvent( "onreadystatechange", arguments.callee);
//这里是回调函数
}
});

其他浏览器(Firefox,Opera,chrome等 )

在其他非IE的浏览器上 Firefox,Opera,chrome等 iframe 都会拥有一个 onload 事件,此事件只要触发就说名内容已经加载完毕。

iframe.addEventListener( "load", function(){
//代码能执行到这里说明已经载入成功完毕了
this.removeEventListener( "load", arguments.call, false);
//这里是回调函数
}, false);

综合一下

if(iframe.attachEvent){
iframe.attachEvent("onreadystatechange", function() {
//此事件在内容没有被载入时候也会被触发,所以我们要判断状态
//有时候会比较怪异 readyState状态会跳过 complete 所以我们loaded状态也要判断
if (iframe.readyState === "complete" || iframe.readyState == "loaded") {
//代码能执行到这里说明已经载入成功完毕了
//要清除掉事件
iframe.detachEvent("onreadystatechange", arguments.callee);
//这里是回调函数
}
});
}else{
iframe.addEventListener("load", function() {
//代码能执行到这里说明已经载入成功完毕了
this.removeEventListener("load", arguments.call, false);
//这里是回调函数
}, false);
}

注意:上面的函数必须放在 iframe 被appendChild到body后,否则不会被触发

以上内容是小编给大家介绍的JS判断iframe是否加载成功的方法,希望对大家有所帮助!

Javascript 相关文章推荐
THREE.JS入门教程(4)创建粒子系统
Jan 24 Javascript
Jquery搜索父元素操作方法
Feb 10 Javascript
jQuery中使用each处理json数据
Apr 23 Javascript
用JavaScript实现对话框的教程
Jun 04 Javascript
window.location.reload 刷新使用分析(去对话框)
Nov 11 Javascript
AngularJS向后端ASP.NET API控制器上传文件
Feb 03 Javascript
javascript 判断是否是微信浏览器的方法
Oct 09 Javascript
JavaScript动态检验密码强度的实现方法
Nov 09 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
Feb 13 jQuery
JS实现查找数组中对象的属性值是否存在示例
May 24 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
Oct 15 Javascript
vue中使用mockjs配置和使用方式
Apr 06 Vue.js
JS iFrame加载慢怎么解决
May 13 #Javascript
基于JS实现的笛卡尔乘积之商品发布
May 13 #Javascript
基于jQuery倒计时插件实现团购秒杀效果
May 13 #Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
May 13 #Javascript
最简单的tab切换实例代码
May 13 #Javascript
浅析创建javascript对象的方法
May 13 #Javascript
全面理解JavaScript中的闭包
May 12 #Javascript
You might like
php文件上传表单摘自drupal的代码
2011/02/15 PHP
PHP文件大小格式化函数合集
2014/03/10 PHP
PHP常用工具类大全附全部代码下载
2015/12/07 PHP
javascript AutoScroller 函数类
2009/05/29 Javascript
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
2009/06/04 Javascript
可在线编辑网页文字效果代码(单击)
2013/03/02 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
js快速排序的实现代码
2013/12/08 Javascript
jquery 使用简明教程
2014/03/05 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
jquery+css3实现会动的小圆圈效果
2016/01/27 Javascript
浅析Bootstrap验证控件的使用
2016/06/23 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
JS库之wow.js使用方法
2017/09/14 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
微信小程序页面滚动到指定位置代码实例
2019/09/07 Javascript
vue封装swiper代码实例解析
2019/10/08 Javascript
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
Python栈的实现方法示例【列表、单链表】
2020/02/22 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
2020/03/01 Python
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
Notino罗马尼亚网站:购买香水和化妆品
2019/07/20 全球购物
旅游市场营销方案
2014/03/09 职场文书
物业保安岗位职责
2014/07/02 职场文书
学生违反校规检讨书
2014/10/28 职场文书
街道社区活动报告
2015/02/05 职场文书
长江七号观后感
2015/06/11 职场文书
CSS实现单选折叠菜单功能
2021/11/01 HTML / CSS
5个实用的JavaScript新特性
2022/06/16 Javascript