退出系統時跳出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中加入腳本

?
12345 function window.onload()    {        if(window.parent.length>0)         window.parent.location=location;    }

?
12345 <script type="text/javascript"> if (top.location !== self.location) {    top.location=self.location;}</script>

?
1234 <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代碼,從而判斷是不是頂級窗體而自動跳轉。

這兩種方法的區別就在於一個是提交請求之前對請求進行處理,另外一個是請求回來以后進行處理。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com