web项目里,用filter设定了会话超时的时间,只是设置了一个错误页面,但是用户点击的功能是在不同的iframe里,所以错误页面就会出现在对应的iframe里,请教各位TX,怎样才能使得不管在哪个iframe操作, 都是跳转到最大的那个页面上,先谢谢啦

解决方案 »

  1.   

    设置target使得响应显示在顶层框架中:
    <a href="A.html" target="_top">
      

  2.   

    之前做过一个:你还要考虑假如弹出窗口(window.open / showModelDialog) 里面的页面是否过期的情况。
    当然这个也不是没有问题:如果弹出窗口,里面又弹出窗口,里面页面过期了。 呵呵。不过修改下就可以实现若干层次弹出窗口会话过期的问题。---------------------------------------------------------------------
    if(session_username==null)
    {  
        response.sendRedirect("/xxx/common/TopFrame2Mainpage.jsp");
        return;
    }
    -----------------------------------------------------------------------------------
    <script type="text/javascript">
            function jump2mainpage(){
                if(window.opener){
                    window.opener.top.location="/xxx/login.jsp";
                    window.close();
                    alert("会话已经过期,请重新登录!");
                }else if(window.dialogHeight){
                    alert("会话已经过期,请重新登录!");
                    window.close();
                    window.returnValue="topRedirect";
                    
                }else{
                    alert("会话已经过期,请重新登录!");
                    window.top.location="/xxxxx/login.jsp";
                }
            }
        </script>
     <body onload="jump2mainpage();"></body>
      

  3.   

    呵呵。也可以写一个ajax来调用一个判断是否session过去的函数!可以随时监控,如果过期就自动弹出信息并跳转!
      

  4.   

    在login.jsp里加上
    <script>
    if (self.location != top.location) {
      top.location.href = self.location.href;
    }
    </script>
      

  5.   

    不知道楼上一群人看lz的问题了么,就开始捧1楼的臭脚。
    如果按一楼这么做岂不是不超时的情况下原来应该放在iframe里的正常功能都跑到顶层窗口里面去了。再说你们怎么知道lz的功能页面是用a链接过去的……