基于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模拟类继承小例子
Jul 17 Javascript
jquery 实现表单验证功能代码(简洁)
Jul 03 Javascript
Javascript中的delete介绍
Sep 02 Javascript
JS将表单导出成EXCEL的实例代码
Nov 11 Javascript
JavaScript实现给按钮加上双重动作的方法
Aug 14 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
Jun 23 Javascript
jQuery多级联动下拉插件chained用法示例
Aug 20 Javascript
vue.js实现请求数据的方法示例
Feb 07 Javascript
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
Jul 21 Javascript
详解前端路由实现与react-router使用姿势
Aug 07 Javascript
vue实现文字加密功能
Sep 27 Javascript
js实现随机点名程序
Sep 17 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
php实现rc4加密算法代码
2012/04/25 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
javascript获得CheckBoxList选中的数量
2009/10/27 Javascript
学习面向对象之面向对象的术语
2010/11/30 Javascript
JQuery实现防止退格键返回的方法
2015/02/12 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
2017/02/20 Javascript
详解NodeJS框架express的路径映射(路由)功能及控制
2017/03/24 NodeJs
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
Bootstrap按钮组实例详解
2017/07/03 Javascript
Vue组件选项props实例详解
2017/08/18 Javascript
详解基于Vue-cli搭建的项目如何和后台交互
2018/06/29 Javascript
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
vue-cli3 DllPlugin 提取公用库的方法
2019/04/24 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
python+Splinter实现12306抢票功能
2018/09/25 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
Python 私有化操作实例分析
2019/11/21 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
HTML5 textarea高度自适应的两种方案
2020/04/08 HTML / CSS
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
华硕新加坡官方网上商店:ASUS Singapore
2020/07/09 全球购物
爱国卫生月实施方案
2014/02/21 职场文书
降消项目实施方案
2014/03/30 职场文书
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
行政文员岗位职责
2015/02/04 职场文书
追悼词范文大全
2015/06/23 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
opencv深入浅出了解机器学习和深度学习
2022/03/17 Python