求助~在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, 把弹出的窗口自己关掉。