基于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 相关文章推荐
鼠标放在图片上显示大图的JS代码
Mar 26 Javascript
JS实现鼠标单击与双击事件共存
Mar 08 Javascript
jQuery之简单的表单验证实例
Jul 07 Javascript
jquery css实现邮箱自动补全
Nov 14 Javascript
vue+node+webpack环境搭建教程
Nov 05 Javascript
微信小程序上传图片到服务器实例代码
Nov 07 Javascript
vue 中directive功能的简单实现
Jan 05 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
Mar 21 Javascript
vue--vuex详解
Apr 15 Javascript
在微信小程序中使用vant的方法
Jun 07 Javascript
js实现简单掷骰子小游戏
Oct 24 Javascript
vue 子组件watch监听不到prop的解决
Aug 09 Javascript
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
DC这些乐高系列动画电影你看过几部?
2020/04/09 欧美动漫
PHP4.04简明安装
2006/10/09 PHP
MySQL连接数超过限制的解决方法
2011/07/17 PHP
深入浅析PHP无限极分类的案例教程
2016/05/09 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
2021/03/09 Javascript
splice slice区别
2006/10/09 Javascript
javascript Excel操作知识点
2009/04/24 Javascript
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
javascript实现省市区三级联动下拉框菜单
2015/11/17 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
详解vuejs几种不同组件(页面)间传值的方式
2017/06/01 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——LGD
2018/04/04 DOTA
python sort、sorted高级排序技巧
2014/11/21 Python
详解python中的装饰器
2018/07/10 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
仓库管理制度
2014/01/21 职场文书
网络教育自我鉴定
2014/02/04 职场文书
工作睡觉检讨书
2014/02/25 职场文书
导师推荐信范文
2014/05/09 职场文书
实习推荐信
2014/05/10 职场文书
党员个人对照检查材料范文
2014/09/24 职场文书
英文感谢信范文
2015/01/21 职场文书
医院合作意向书范本
2015/05/08 职场文书
《花钟》教学反思
2016/02/17 职场文书
详解前端任务构建利器Gulp.js使用指南
2021/04/30 Javascript
一文教你快速生成MySQL数据库关系图
2022/06/28 Redis