登入攔截之後,登入頁面出現在iframe的src裡面
阿新 • • 發佈:2018-12-16
之前搭建了一個小專案,在登入超時後返回登入頁會在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閃了一下,顯然這樣並不是一個完美的方法,但是又沒有更好的解決辦法也只能先這樣用了。