转 http://blog.csdn.net/chwshuang/article/details/48009185
iframe请求失效重新登录后直接跳转到请求内容页面的解决方案
上一篇文章讲到easyUI iframe中请求Session失效后iframe内跳转到首页,首页只在iframe中显示,没有填充整个页面,通过判断window.top是否为空或者URL是否一致来解决:easyUI iframe中请求Session失效后iframe内跳转到首页的解决方案
不过还有一个问题,就是登录成功以后,发现浏览器直接跳转到iframe内容的页面了,如果iframe外有父页面,父页面是不显示的。
原因:目前浏览器,后台应用都支持请求保存,如果请求失败后,会保存请求,等登录后再继续执行请求。
解决方案:
1. 如果登录失败,将请求地址指向登录页面前,先跳转到会话超时提示页面,然后在提示页提示重新登录,重新登录按钮指向登出,登出完成后自动会跳转到登录页面。
- <pre name="code" class="html"> //判断当前窗口是否有顶级窗口,如果有就让当前的窗口的地址栏发生变化, //这样就可以让登陆窗口显示在整个窗口了
- function loadTopWindow(){
- if (window.top!=null && window.top.document.URL!=document.URL){
- var urlStr = document.URL;
- var endIndex = urlStr.indexOf('xxxxx') + 5;
- urlStr = urlStr.substring(0, endIndex);
- window.top.location= urlStr + "/timeout.jsp"; // 跳转到提示页
- //alert(document.URL);
- //alert(urlStr);
- //window.top.location= document.URL; // 不跳转到首页
- }
- }
- </script>
- </head>
- <body onload="loadTopWindow()">