日期:2014-05-18  浏览次数:20694 次

求助~在onbeforeunload事件写入代码的怪问题
我想在系统退出或者页面被刷新时删除session内容,因此做了如下处理(我用的是spring框架):
1、在一个controller里处理 "getCloseView.do "请求:
public   ModelAndView   getCloseView(HttpServletRequest   request,HttpServletResponse   response){
                System.out.println( "close ");
               HttpSession   session=request.getSession();
                session.invalidate();
               
                return   new   ModelAndView( "close ");
}
其实就相当于一个使session失效的普通servlet.

2、在页面BODY里面加上:onbeforeunload= "javascript:location.href= 'getCloseView.do ' "

实际运行时并没有执行controller里面的语句。
但是如果在后面加上一个 "alert() "语句,也就是改成下面的语句:
onbeforeunload= "javascript:location.href= 'getCloseView.do ';alert() "
controller里面的代码就被执行了,控制台上能看到打印的 "close "字样。

请教各位达人,这是怎么回事啊?

------解决方案--------------------
因为页面已经在卸载过程中了,不可能再location.href=...了

不过,可以这样写:

onbeforeunload= "javascript:window.open( 'getCloseView.do ') "

记得getCloseView.do 应该输出一小段 javascript, 把弹出的窗口自己关掉。