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

 更新时间:2016年05月13日 10:13:44   投稿:mrr  
这篇文章主要介绍了基于JS判断iframe是否加载成功的方法【多种浏览器】的相关资料,需要的朋友可以参考下

推荐阅读:

JS iFrame加载慢怎么解决

在项目中经常要动态添加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是否加载成功的方法,希望对大家有所帮助!

相关文章

  • 完美解决JS文件页面加载时的阻塞问题

    完美解决JS文件页面加载时的阻塞问题

    下面小编就为大家带来一篇完美解决JS文件页面加载时的阻塞问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • 详解关于JSON.parse()和JSON.stringify()的性能小测试

    详解关于JSON.parse()和JSON.stringify()的性能小测试

    这篇文章主要介绍了详解关于JSON.parse()和JSON.stringify()的性能小测试,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • 前端发布缓存导致白屏几种解决方案总结

    前端发布缓存导致白屏几种解决方案总结

    这篇文章主要介绍了前端发布缓存导致白屏的几种解决方案,文章还介绍了Jenkins发布流程优化和使用版本号方案,以减少发布缓存问题,每种方案都有其优缺点,需要根据实际情况进行选择和调整,需要的朋友可以参考下
    2025-04-04
  • javascript中对对层的控制

    javascript中对对层的控制

    javascript中对对层的控制...
    2006-12-12
  • javascript事件冒泡详解和捕获、阻止方法

    javascript事件冒泡详解和捕获、阻止方法

    虽然精通jquery,但对它的原型javascript却不是很了解,最近在学习javascript中遇到了一些困难,比如冒泡和捕获,很多次被提到,但又不知究竟应用在何处。找到了一些好文章解惑,在这里分享给大家
    2014-04-04
  • 微信小程序实现下拉刷新和上拉分页效果的方法详解

    微信小程序实现下拉刷新和上拉分页效果的方法详解

    这篇文章主要为大家详细介绍了微信小程序动画是如何实现下拉刷新和上拉分页效果的,文中示例代码讲解详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • prototype框架中美元符号$用法分析

    prototype框架中美元符号$用法分析

    这篇文章主要介绍了prototype框架中美元符号$用法,结合实例形式较为详细的分析了$符号的使用技巧与相关注意事项,需要的朋友可以参考下
    2016-01-01
  • javascript代码混淆与加解密方式

    javascript代码混淆与加解密方式

    这篇文章主要介绍了javascript代码混淆与加解密方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • JavaScript常见继承模式实例小结

    JavaScript常见继承模式实例小结

    这篇文章主要介绍了JavaScript常见继承模式,结合实例形式总结分析了javascript原型链继承、构造函数继承、组合继承、原型式继承、寄生式继承等相关实现技巧与操作注意事项,需要的朋友可以参考下
    2019-01-01
  • fckeditor 获取文本框值的实现代码

    fckeditor 获取文本框值的实现代码

    获取文本框值的实现代码
    2009-02-02

最新评论