当我们使用frame框架,有使用了Struts2框架的时候,如果打开界面的URL不是XXX.jsp,而是XXX.action,会发现,在使用了Struts2的登录拦截的时候,result指向的url默认是在当前想要跳往的页面所在的框架中,那么,拦截的登录页面也会自动出现在frame框架中了,但是,我们并不期望登录页面出现在frame框架中,那么久只有通过判断登录界面出现的位置是不是属于框架了,如果是属于框架,那么在js中跳出框架,如果不属于frame框架,就不用进行跳出frame框架的操作了。
我的jsp框架如下:
?
<FRAMESET id="index" border=0 frameSpacing=0 rows=100,* frameBorder=no> <FRAME id=headFrame name=headFrame src="head.jsp" noResize scrolling=no> <FRAME id=mainFrame name=mainFrame src="default.jsp" > </FRAMESET> <noframes></noframes>
?登录界面的js设置如下:
?
?
if(self.frameElement!=null && self.frameElement.tagName=="FRAME"){ window.top.location.href="admin/login.jsp"; }
?其中,self.frameElement!=null? 不需要写,因为当登录界面本来就不在frame中时,self.frameElement的值就是null,如果我们再用? ?self.frameElement.tagName 的时候,就会出现空指针异常。
window.top.location.href
?
?这个是专门用来跳出frame框架的,如果没有top,则没有跳出框架。
原文:http://yunlian0621.iteye.com/blog/2220089