之前搭建了一个小项目,在登录超时后返回登录页会在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闪了一下,显然这样并不是一个完美的方法,但是又没有更好的解决办法也只能先这样用了。
标签:src,登录,jsp,location,iframe,login,页面 From: https://blog.51cto.com/linmengmeng/5907349