本文实例讲述了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="/UploadFiles/2021-04-02/iframe1.html">值得注意的是:本文中的示例是放在按钮click事件中检测的,如果打算页面一打开就开始检测,一定要放在index.html页body的onload事件中,否则会出异常(原因是index.html尚未加载完成,这时就急着获取框架的内容,得到的是undefined或null)
希望本文所述对大家JavaScript程序设计有所帮助。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“js检测iframe是否加载完成的方法”评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新动态
2024年11月14日
2024年11月14日
- 黄乙玲1988-无稳定的爱心肝乱糟糟[日本东芝1M版][WAV+CUE]
- 群星《我们的歌第六季 第3期》[320K/MP3][70.68MB]
- 群星《我们的歌第六季 第3期》[FLAC/分轨][369.48MB]
- 群星《燃!沙排少女 影视原声带》[320K/MP3][175.61MB]
- 乱斗海盗瞎6胜卡组推荐一览 深暗领域乱斗海盗瞎卡组分享
- 炉石传说乱斗6胜卡组分享一览 深暗领域乱斗6胜卡组代码推荐
- 炉石传说乱斗本周卡组合集 乱斗模式卡组最新推荐
- 佟妍.2015-七窍玲珑心【万马旦】【WAV+CUE】
- 叶振棠陈晓慧.1986-龙的心·俘虏你(2006复黑限量版)【永恒】【WAV+CUE】
- 陈慧琳.1998-爱我不爱(国)【福茂】【WAV+CUE】
- 咪咕快游豪礼放送,百元京东卡、海量欢乐豆就在咪咕咪粉节!
- 双11百吋大屏焕新“热”,海信AI画质电视成最大赢家
- 海信电视E8N Ultra:真正的百吋,不止是大!
- 曾庆瑜1990-曾庆瑜历年精选[派森][WAV+CUE]
- 叶玉卿1999-深情之选[飞图][WAV+CUE]