处理layui(xxxUI)使用iframe框架,当在一个页面退出登录后,另一个页面点击菜单出现登录页嵌套在iframe中

项目后端管理台开发时,特别是使用xxUI时,如果项目中使用了iframe框架作为打开菜单的窗口。当在浏览器中打开一个页面登录到首页后,再打开一个也登录到项目的首页。若从其中一个首页退出后,如果在另一个页面中点击菜单或其他功能时,请求会被登录拦截器拦截到登录页面。这时,登录页面出现在iframe框架中,而不是整个页面跳转到登录页面。

解决办法,在登录页面中,添加js判断,如果不是顶层框架跳转到登录页面,则将顶层的页面url设置为跳转当前这个iframe框架的页面,也许是一个转发的接口(xxx.action,xxx.do),也许是重定向到login.jsp页面。为了逻辑的清晰,最好是在后端的logout方法中,重定向到login.jsp。

$(function(){
	login.initPage();
});
var login = {
	//初始化页面跳转,为了防止从iframe跳转到login页面直接在iframe中显示login页面
	initPage : function() {
		//alert(location.href);
		if(window.top != window.self){
			top.location.href = location.href;
		}
	},
}