传统的系统界面,有iframe页面,当用户退出系统或者session过期或者非法请求时,都要使当前页面跳转到登录页面。比如用户点击注销的按钮在上面得top.jsp里面,方法:<a href="../login/action_logout.do">退出系统</a>退出之后你会发现,只是刷新了top.jsp上面那个iframe,其他两个还在,当然不允许这样啦。解决办法大致有几种

常规的退出系统无非就是两种方式,一个是点击超链接,页面跳转到登录页面,另一个就是点击页面元素,触发js事件,使当前页面跳转。
1、利用超链接属性中target="_parent"。
在超链接中加入target属性<a href="../login/action_logout.do" target="_parent">退出系统</a> 就可以了,他的原理相当于目标页面替换当前的父窗体,而不是当前操作的窗体。
target属性值的含义:
_blank:新建窗口、_self:相同窗口、_parent:父窗口、_top:首窗口
2、利用js
1)<a href="#" onclick=top.location.replace("logout.action")>退出</a>
   在logout()函数中将session清空,返回的登录页面就会全屏显示登录页面.他的原理相当于在请求发送前,把请求的页面替换成当前页面最顶级的frame,这样返回的页面理所应当的会替换整个页面的内容。

2)在login.jsp中加入脚本

1
2
3
4
5
function window.onload()
    {
        if(window.parent.length>0)
         window.parent.location=location;
    }

1
2
3
4
5
<script type="text/javascript">
if (top.location !== self.location) {
    top.location=self.location;
}
</script>

1
2
3
4
<script language="JavaScript">  
<span style="white-space:pre">    </span>if (window != top)  
<span style="white-space:pre">    </span>top.location.href = location.href;  
</script>

当登录页面在frame中加载过程中,会触发这段js代码,从而判断是不是顶级窗体而自动跳转。

这两种方法的区别就在于一个是提交请求之前对请求进行处理,另外一个是请求回来以后进行处理。

最新文章

  1. PowerDesigner设计Name和Comment 替换
  2. 第四篇:SOUI资源文件组织
  3. java变量和方法的覆盖和隐藏(翻译自Java Tutorials)
  4. (原创)Windows和Linux间共享文件
  5. ubuntu 命令收集
  6. 创建生产订单函数BAPI_PRODORD_CREATE
  7. (转) error: linker command failed with exit code 1 (use -v to see invocation)
  8. 如何在协作开发安卓项目中打jar包给合作人
  9. TortoiseSVN 文件关联图标不显示的解决方法
  10. 分布式日志收集系统Apache Flume的设计详细介绍
  11. 使用vs编译事件来动态发布配置文件
  12. input date 赋值的坑及改变时如何获取 input date的值
  13. Ping IP速度范围
  14. JS基础-数组的常用方法-冒泡排序
  15. Vue Element Tabe Pager 分页方案
  16. Udacity并行计算课程 CS344 编程作业答案
  17. 11G新特性 -- Expression Statistics
  18. 阿里云Centos6.9安装图形化界面
  19. 机器学习之路: python 朴素贝叶斯分类器 MultinomialNB 预测新闻类别
  20. 李洪强iOS之集成极光推送二iOS 证书 设置指南

热门文章

  1. lsof 解决无法删除文件夹问题
  2. 16年青岛网络赛 1002 Cure
  3. Runloop之个人理解
  4. Selenium定位二 --多个元素定位方法 和层级定位方法
  5. Python 爬虫学习 urllib2
  6. 快速理解Java中的五种单例模式
  7. 億万笑者 - Radwimps
  8. (转)Let’s make a DQN 系列
  9. 一个链式调用 setTimeout的例子
  10. 如何理解andriod中的View和framelayout两个概念