在做一个B/S架构的聊天小项目,遇到的情况是这样的:
在首页点击“用户聊天”超链接,打开一个模式对话框(处于最顶端),页面为登陆页面,用户输入用户名和密码登陆后,进入聊天主界面(仍在模式对话框中)。
在聊天主界面的右侧显示在线用户列表,利用Ajax每隔3秒从servlet获取在线用户列表(这个用户列表以ConcurrentHashMap的形式存放在一个HttpSessionListener中)。
现在的问题是:
我想要在用户关闭聊天主界面这个模式对话框时,销毁session,从而除去监听器的ConcurrentHashMap中对应的用户(以sessionId为key),但就是在关闭时无法销毁,请高手告知如何解决呢?
下面这个方法在打开的不是模式对话框时是适用的,但是在模式对话框时失效:<script type="text/javascript">
window.onunload = function(){
//判断页面是关闭还是刷新,因为刷新也会触发unload事件
if(event.clientX<0&&event.clientY<0) {
document.write('<iframe width="0" height="0" src="chat/logout.jsp"></iframe><OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0  id=WebBrowser width=0></OBJECT>');
//无提示地关闭浏览器
document.all.WebBrowser.ExecWB(45,1);
}
}
</script>真的是想尽办法了,请各位高手一定帮我想想,给个思路也好啊,先谢谢了。