1. 程式人生 > >登入攔截之後,登入頁面出現在iframe的src裡面

登入攔截之後,登入頁面出現在iframe的src裡面

之前搭建了一個小專案,在登入超時後返回登入頁會在iframe裡開啟登入頁面,這顯然不是我想實現的效果,應該是攔截之後,登入頁面在iframe的頂層頁面顯示,趁著今天有時間就查了一下如何解決這個bug。

在這裡插入圖片描述

解決辦法,在登入頁面中,新增js判斷,如果不是頂層框架跳轉到登入頁面,則將頂層的頁面url設定為跳轉當前這個iframe框架的頁面,也許是一個轉發的action,也許是重定向到login.jsp頁面。為了邏輯的清晰,最好是在後端的logout方法中,重定向到login.jsp。

login.jsp頁面中的js判斷為:

$(function(){
	login.initPage
(); }); var login = { //初始化頁面跳轉,為了防止從iframe跳轉到login頁面直接在iframe中顯示login頁面 initPage : function() { //alert(location.href); if(window.top != window.self){ top.location.href = location.href; } }, } /* 或者直接新增一個if判斷 if (window != top) { top.location.href = location.href; } */

但是這樣雖然實現類登入失效攔截後,iframe頂層進入登入頁面,但是是在login.jsp載入完之後執行的if判斷,這樣還是將top.jsp閃了一下,顯然這樣並不是一個完美的方法,但是又沒有更好的解決辦法也只能先這樣用了。