读书人

~在onbeforeunload事件写入代码的怪有

发布时间: 2011-12-28 22:45:21 作者: rapoo

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

读书人网 >Java Web开发

热点推荐