请问如何确保iframe已经完全载入?

crackzzy 2003-08-22 03:49:03
我做的一个页面里面需要包含一个iframe这个iframe是一个aspx文件。而且我这个页面一开始就要用到iframe里的form里的数据。所以我的这个页面需要在一开始就确保iframe已经被完全载入了。并且在iframe被完全载入之前这段时间里应该什么都不做,空等iframe的装载。
请问高手如何实现?
...全文
312 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
fason 2003-08-27
  • 打赏
  • 举报
回复
啊?我的参考上面写着是ie4+开始支持的,:(
yonghengdizhen 2003-08-27
  • 打赏
  • 举报
回复
to fason(阿信)
状态是有但iframe的onreadystatechange事件是在ie5.5以后才开始支持的
你虽然知道需要readyState==4但你无法获知状态何时改变为这个值..
setTimeout可以,但结构上显得不太紧凑
fason 2003-08-26
  • 打赏
  • 举报
回复
IE5开始就已经有readyState属性了吧?
fason 2003-08-26
  • 打赏
  • 举报
回复
IE5开始就已经有readyState属性了吧?
yonghengdizhen 2003-08-26
  • 打赏
  • 举报
回复
ie在处理单一窗口文档载入好象是使用的单一线程,所以无限循环是行不同的.
如果是ie6可以实现iframe的onreadystatechange捕获状态
否则,最好的办法是在此页定义一个客户端回调,由iframe加载的页面调用
seabell 2003-08-26
  • 打赏
  • 举报
回复
<script>
check=null;
function ifload()
{
try
{sub.document.all.mytext.value="welcome";
clearTimeout(check);
window.status="done";
}
catch(e)
{
window.status="waiting";
}
}
check=setTimeout(ifload,2000);
</script>
<iframe id=sub src="sub.htm"></iframe>

sub.htm
<script>
for(i=0;i<1000;i++)
window.status=i;
</script>
<input type=text name=mytext>
多菜鸟 2003-08-26
  • 打赏
  • 举报
回复
test.document.readyState
test.document.onreadystatechange

以上两个怎么理解啊?
hover_online 2003-08-26
  • 打赏
  • 举报
回复
没看楼上的为什么不成,我想这样不知可不可以:

在暗真中加入
<body onload="javascript:document.all.hideIt.style.display='none'">
<p align="center" id="hideIt" style="color:blue"><br><br><br>正在打开,请稍侯--------------</p>
多菜鸟 2003-08-26
  • 打赏
  • 举报
回复
up
crackzzy 2003-08-24
  • 打赏
  • 举报
回复
可是好象都没有达到那种要求啊。
虽然用setTimeout方法可以在一段时间后自动执行一段判断代码。但是在执行这些代码的时候,页面的其他部分也被执行着,也就是说已经运行到了需要调用iframe里的内容的地方了。这样一来IE还是会报错。说找不到iframe里的东西。
现在最主要的问题是怎么样让页面在iframe还没装载以前什么都不做。我本来想用死循环控制的。不过好象行不通,两秒种IE就弹出一个对话框提示继续执行可能需要很长时间,问是否继续。而且死循环的时候狂耗CPU,不是一个好的解决方法。
请问高手还有什么更好的解决办法吗?
fason 2003-08-22
  • 打赏
  • 举报
回复
说错,:(,if(test.document.readyState=="complete")
fason 2003-08-22
  • 打赏
  • 举报
回复
if(test.readyState=="complete"){

这样一步步测试也可以
damboo 2003-08-22
  • 打赏
  • 举报
回复
fason(阿信)的方法好象比较专业,我没有试过
我当时用了土办法,以阿信的页面为例,可以这样:
主页面:
<iframe src="demo.asp" name="test"></iframe>
<script language="JavaScript">
<!--
function checkDemo(){
if(test.loadOK){
//这里是需要处理的代码
}
else{
setTimeout("checkDemo();");
}
}
//-->
</script>


在demo.asp的最后一段,写上
<script language="JavaScript">
<!--
loadOK=ture;
//-->
</script>
cloudchen 2003-08-22
  • 打赏
  • 举报
回复
在包含这个iframe的页面里面判断<body onload="alert('iframe已经下载完毕,而且可以通过DOM访问')">
这个页面onload完毕后就包括iframe也load完毕
fason 2003-08-22
  • 打赏
  • 举报
回复
<iframe src="demo.htm" name="test"></iframe>
<script language="JavaScript">
<!--
test.document.onreadystatechange=ex
function ex(){
if(test.document.readyState=="complete")
alert("已下载完")
}
//-->
</script>
crackzzy 2003-08-22
  • 打赏
  • 举报
回复
怎么没人回答啊?自己给自己顶一下!
crackzzy 2003-08-22
  • 打赏
  • 举报
回复
但是我怎么实现在父页面等待呢?
而且在IE5上好象不能处理iframe里的onload事件。
这是怎么回事呢?
anita2li 2003-08-22
  • 打赏
  • 举报
回复
<iframe onload=”alert(‘iframe is ok’)”>
你也可以在iframe的业面的最后给一个变量赋值﹐然后在当前页里用setTimeout获取那个值来判断是否加载完成
nik_Amis 2003-08-22
  • 打赏
  • 举报
回复
up

87,901

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧