zoukankan      html  css  js  c++  java
  • 退出系统时跳出frame框架

    传统的系统界面,有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代码,从而判断是不是顶级窗体而自动跳转。

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

  • 相关阅读:
    php判断token有效期
    ecshop数据库操作
    CSS3选择器 :nth-child(n) 如何理解
    socket_wirte、socket_read、socket_send、socket_recv
    Mysql按指定顺序排序的两种写法
    Photoshop图片优化文件大小
    Wordpress中的自定义栏目是什么玩意,有什么用?
    Windows使用压缩包安装Mysql5.7.17服务
    Discuz论坛搬家后出现 Unknown column 'app1' in 'where clause' 原因及解决办法
    .PHP后缀大写导致Linux下Composer找不到类
  • 原文地址:https://www.cnblogs.com/lihaishu/p/5256978.html
Copyright © 2011-2022 走看看