js检测iframe是否加载完成的方法


Posted in Javascript onNovember 26, 2015

本文实例讲述了js检测iframe是否加载完成的方法。分享给大家供大家参考,具体如下:

这里是继上一篇《js实现iframe框架取值的方法(兼容IE,firefox,chrome等)》的扩展应用:

应用场景:iframe个人感觉最独特的应用之一就是配合P3P协议可以实现跨域写入cookie(好象除此之外,还没找到更有效的办法),但是有时候我们不知道这个iframe页面是否执行完毕,有没有办法判断iframe里的页面是否load完成了呢?

iframe1.html:

<html>
<head>
  <title>框架内页</title>
</head>
<body>
  <div>
    <input id="txt" name="txt" type="text" value="3秒钟后这里会变成ok" />
  </div>
  <script type="text/javascript">
    setTimeout("SetValue()",3000);
    function SetValue(){
      document.getElementById("txt").value="ok";
    }
  </script>
</body>
</html>

iframe2.html:

<html>
<head>
  <title>框架内页</title>
</head>
<body>
  <div>
    <input id="txt" name="txt" type="text" value="6秒钟后这里会变成ok" />
  </div>
  <script type="text/javascript">
    setTimeout("SetValue()",6000);
    function SetValue(){
      document.getElementById("txt").value="ok";
    }
  </script>
</body>
</html>

index.html:

<html>
<head>
  <title>检测本页中的所有iframe是否加载完成</title>
  <script type="text/javascript">
//得取iframe中的某个html控件值
function getIframeControlValue(iframeId,controlId){
  var ofrm = document.getElementById(iframeId).document;
  if (ofrm==undefined)
  {
    ofrm = document.getElementById(iframeId).contentWindow.document;
    var ff = ofrm1.getElementById(controlId).value;
    return ff;
  }
  else
  {
    var ie = document.frames[iframeId].document.getElementById(controlId).value;
    return ie;
  } 
}
//检测所有的iframe是否"加载"完成
function fnLoadOk(){
  var b = true;
  for(var i=1;i<=2;i++){
    if (getIframeControlValue("frame" + i,"txt")=="ok"){
      b = b && true;
    }
    else
    {
      b = b && false;
    }
  }
  return b;
}
//设置回答显示区的值
function setValue(str){
  if (str!=null && str.length>0){
    document.getElementById("result").innerHTML = "<span style='color:red'>" + new Date().toLocaleString() + " " + str + "</span>";
  }
  else{
    document.getElementById("result").innerHTML = "<span style='color:green'>" + new Date().toLocaleString() + " 正在加载" + "</span>";
  }  
}
var _check = setInterval("t()",500);//每隔0.5秒检查一次
function t(){
  if (fnLoadOk()){
    clearInterval(_check);//加载完成后,清除定时器
    setValue("加载完成!");
  }
  else{
    setValue();
  }
}
</script>
</head>
<body>
<h3>检测本页中的iframe是否加载完成</h3>
<iframe name="frame1" id="frame1" src="iframe1.html" frameborder="1" height="60" width="180"></iframe>
<iframe name="frame2" id="frame2" src="iframe2.html" frameborder="1" height="60" width="180"></iframe>
<div id="result" style="margin:10px;">
准备就绪
</div>
</body>
</html>

值得注意的是:本文中的示例是放在按钮click事件中检测的,如果打算页面一打开就开始检测,一定要放在index.html页body的onload事件中,否则会出异常(原因是index.html尚未加载完成,这时就急着获取框架的内容,得到的是undefined或null)

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
prototype与jquery下Ajax实现的差别
Sep 13 Javascript
Mootools 1.2教程(21)——类(二)
Sep 15 Javascript
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
Nov 14 Javascript
js数字输入框(包括最大值最小值限制和四舍五入)
Nov 24 Javascript
表格单元格交错着色实现思路及代码
Apr 01 Javascript
5分钟理解JavaScript中this用法分享
Nov 09 Javascript
jquery退出each循环的写法
Feb 26 Javascript
创建你的第一个AngularJS应用的方法
Jun 16 Javascript
Jquery on方法绑定事件后执行多次的解决方法
Jun 02 Javascript
JS实现百度网盘任意文件强制下载功能
Aug 31 Javascript
如何用JavaScript实现功能齐全的单链表详解
Feb 11 Javascript
vue 实现通过vuex 存储值 在不同界面使用
Nov 11 Javascript
学习JavaScript设计模式(策略模式)
Nov 26 #Javascript
深入浅析同源策略和跨域访问
Nov 26 #Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
Nov 26 #Javascript
学习JavaScript设计模式(单例模式)
Nov 26 #Javascript
javascript bom是什么及bom和dom的区别
Nov 26 #Javascript
Javascript模仿淘宝信用评价实例(附源码)
Nov 26 #Javascript
Javascript BOM学习小结(六)
Nov 26 #Javascript
You might like
让PHP支持页面回退的两种方法[转]
2007/02/14 PHP
对squid中refresh_pattern的一些理解和建议
2009/04/17 PHP
PHP 基本语法格式
2009/12/15 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
PHP图像处理类库MagickWand用法实例分析
2015/05/21 PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
2016/01/08 PHP
php 生成加密公钥加密私钥实例详解
2017/06/16 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
JavaScript 加号(+)运算符号
2009/12/06 Javascript
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
理解JS绑定事件
2016/01/19 Javascript
JavaScript 消息框效果【实现代码】
2016/04/27 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
EasyUI学习之Combobox下拉列表(1)
2016/12/29 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
Python 字符串中的字符倒转
2008/09/06 Python
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
python代码实现ID3决策树算法
2017/12/20 Python
将字典转换为DataFrame并进行频次统计的方法
2018/04/08 Python
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
Python小白学习爬虫常用请求报头
2020/06/03 Python
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
初中语文教学反思
2014/02/02 职场文书
小学生运动会报道稿
2014/09/12 职场文书
山东省召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
小学五年级语文上册教学计划
2015/01/22 职场文书
委托收款证明
2015/06/23 职场文书
推普标语口号大全
2015/12/26 职场文书
python可视化之颜色映射详解
2021/09/15 Python