这是jsp
<frameset rows="64,*"  FRAMEBORDER="no" >
  <frame src="./jsp/banner.jsp?SUB_APP_NAME=SMART_DOC" name="Banner" scrolling="no" marginwidth="0" marginheight="0" noresize="noresize">
  <frameset cols="220,*" FRAMEBORDER="no">
    <frame src="./servlet/JSActaSmartDocReportsTree" name="SmartDoc" marginwidth="0" marginheight="0" scrolling="no" target="main">
    <frame src="./servlet/JSSelfDocScreenShotProject" name="AvailableReports" marginwidth="0" marginheight="0" >
  </frameset>
</frameset>上面点了一个按钮后,会执行这个javascript.function onRepoChange(selectedRepo,autodocExpand,servlet,module)
{  if(opener.top.frames[2])
  {
       opener.top.frames[2].window.location.href= "../servlet/"+ servlet + "?REPONAME="+encodeURIComponentNew(selectedRepo)+"&CURRENT_AUTODOC_EXPAND="+autodocExpand+"&module="+module;
       opener.top.frames[1].window.location.reload(true);
   }
  return true;
}现在是这么实现的,
1. opener.top.frames[2].window.location.href 会将repo=xxx,
2. 这个属性通过url传回去,然后session中设置好属性!
3. 然后opener.top.frames[1].window.location.reload(true);会从session中读取到这个repo的值!如果【2】 先执行,【1】再执行,没有问题!问题是,通过debug发现,没有决定他们的顺序,有时候【1】先执行,在执行【2】,
1. 有没有什么办法让【1】等【2】执行完再执行?

解决方案 »

  1.   

    http://tianlihu.javaeye.com/blog/693164
      

  2.   


     能不能具体一点? 如果按照我上面的写法,[2] 应该先于 【1】 对吧!我试着在中间加了一个alert(),顺序就没有问题了....但这不是解决问题的方法...
      

  3.   

    这个问题挺难解决,后来用了最土的办法,第二个frame不依赖第一个,这样我的问题就解决了!本来是说第一个传参数,保存到session,第二个再去访问!