这种情况该怎么办啦!高分!!!

ccnuxjg 2002-09-12 06:30:44
我有一页面index.htm,是框架做的。其中一个Frame A是控件,其中一个Frame B是用来控制显示的列表。
当我浏览index.htm时,有时候会出现错误,有时候不会。错误原因:是A中控件发出事件,于是我调用B中的函数,用来显示列表信息。可是这个时候B的列表框还没有初始化完成,于是就会出现B中的函数无法调用的情况。
但是有时候却又一切正常,我该怎么防止那种初始化还没有完成的情况下就调用B中的函数的情况呢?

各位老大,请援手!!!
...全文
16 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
alexxing 2002-09-13
  • 打赏
  • 举报
回复
你也不看仔细了,呵呵
你的 "" 里面嵌套了 "" 当然要报错
而且 "" 中间也不能换行啊
qiushuiwuhen 2002-09-13
  • 打赏
  • 举报
回复
不要隔行写
var timer = setInterval( "try{parent.frames('LeftFrame').GetUserList();clearInterval(timer);}catch(e){}",100 );
ccnuxjg 2002-09-13
  • 打赏
  • 举报
回复
我用这个好像就可以了。谢谢各位!
for(;;)
{
if (parent.frames("LeftFrame").document.readyState=="complete")
{
parent.frames("LeftFrame").GetUserList();
break;
}
}
ccnuxjg 2002-09-13
  • 打赏
  • 举报
回复
谢谢各位!
To: Reve(仨仁仕)
你在一个框架中定义的变量endFinished在另一个框架中能够用吗?

To : qiushuiwuhen(秋水无恨) ( )
用 var timer = setInterval( "try
{
parent.frames("LeftFrame").GetUserList();
clearInterval(timer);
}catch(e){}",
100 );
程序报错,说什么
未结束的字符串常量。
Reve 2002-09-12
  • 打赏
  • 举报
回复
在一个框架中加入结束的标志,例如在文件开始加入:
<script>
var endFinished = false;
</script>
在文件最后加入:
<script>
endFinished = true;
</script>

而在另一个框架中用循环来判断这个值:
function loop() {
try {
if(endFinished) {
// do what you want to do.
} esle {
setTimeout('loop();',200);
}
} catch (e){}
}
dugucan 2002-09-12
  • 打赏
  • 举报
回复
可以做个大的层来控制,象现在的CSDN的首页一样,即美观又实用
qiushuiwuhen 2002-09-12
  • 打赏
  • 举报
回复
timer=setInterval("try{yourFunc();clearInterval(timer);}catch(e){}",100);

一直探测,直到yourFunc运行成功
yonghengdizhen 2002-09-12
  • 打赏
  • 举报
回复
关于这种方式.我积累了不少的代码有兴趣可找我联系:
yonghengdi@21cn.com
yonghengdizhen 2002-09-12
  • 打赏
  • 举报
回复
甚至某些功能以父文档提供回调的方式提供给子文档.
因为子文档调用父文档暴露的function通常是安全的..
yonghengdizhen 2002-09-12
  • 打赏
  • 举报
回复
判断
if (document.readyState=="complete")
才执行你要的操作..

其实你也可以想办法把你需要调用的功能放入你的子document的onload事件中处理
这样可以减少数据同步带来的某些问题.
meizz 2002-09-12
  • 打赏
  • 举报
回复
你在A里可以这样试试:
if (parent.framename2.document.all.b)
{
alert("控件B已经调入");
}
else
{
alert("不行!");
}

这里行判断该控件是否加载成功以后再执行命令会好些。
另:你也可以结合try{}catch{}函数来做。
方工 2002-09-12
  • 打赏
  • 举报
回复
首先你是否有办法直到初始化完成的标志是什么?
如果知道就可以将控件放在一个div内,设置其css style display属性为none,一旦初始化完成,在将其display属性设置为""。这是最安全的做法。

87,919

社区成员

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

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