基于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 全兼容可高亮二级缓冲折叠菜单
Jun 04 Javascript
jquery.validate分组验证代码
Mar 17 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
Jun 01 Javascript
JQuery导航菜单选择特效
Apr 11 Javascript
jQuery事件绑定on()与弹窗实现代码
Apr 28 Javascript
iScroll.js 使用方法参考
May 16 Javascript
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
Jul 11 Javascript
ES6中Array.copyWithin()函数的用法实例详解
Sep 16 Javascript
微信小程序嵌入腾讯视频源过程详解
Aug 08 Javascript
js刷新页面location.reload()用法详解
Dec 09 Javascript
vue开发移动端底部导航条功能
Apr 08 Javascript
浅谈JavaScript作用域
Dec 06 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+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
PHP代码优化技巧小结
2015/09/29 PHP
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
php批量转换文件夹下所有文件编码的函数类
2017/08/06 PHP
简单通用的JS滑动门代码
2008/12/19 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
PHP+jquery+ajax实现分页
2016/12/09 Javascript
前端把html表格生成为excel表格的实例
2017/09/19 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
基于vue中css预加载使用sass的配置方式详解
2018/03/13 Javascript
利用Blob进行文件上传的完整步骤
2018/08/02 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
12个提高JavaScript技能的概念(小结)
2019/05/09 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
react项目从新建到部署的实现示例
2021/02/19 Javascript
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
Python3写入文件常用方法实例分析
2015/05/22 Python
Python中类型关系和继承关系实例详解
2015/05/25 Python
深入理解Python中range和xrange的区别
2017/11/26 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
2017/12/14 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
Pytorch模型转onnx模型实例
2020/01/15 Python
Python编写单元测试代码实例
2020/09/10 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
Python与C/C++的相互调用案例
2021/03/04 Python
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
小学英语教学反思
2014/01/30 职场文书
党的群众路线教育实践活动心得体会900字
2014/03/07 职场文书
会计人员岗位职责
2014/03/19 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
科技活动总结范文
2015/05/11 职场文书
亲情作文之母爱
2019/09/25 职场文书