日期:2014-05-17  浏览次数:20765 次

浏览器关闭使session失效的问题。
我想在关闭浏览器的时候向服务器发送清楚session的请求,使session失效,不想改变session-timeout的时间设定。
ie7和ie6在frameset的onunload的事件的执行上有何不同各支持什么样版本的js。请高手不吝赐教。

------解决方案--------------------
1 浏览器关闭后,下次进入时会为新的session,所以不会有安全问题
2 onunload 一般都是 windows.open 一个窗口,在里面处理close信息
------解决方案--------------------
JS是有版本上的区别的.
HTML code
<HTML>
<HEAD>
<title>test</title>
</HEAD>
<body onbeforeunload="RunOnBeforeUnload()" onunload="RunOnUnload()">
<script language="javascript">
function RunOnBeforeUnload() {
 window.event.returnValue = '关闭浏览器将退出系统.';
 }
function RunOnUnload() {
 //执行你的代码
//在这里处理你的保存数据,清除cookies等操作

}
</script>
</body>
</HTML>

------解决方案--------------------
js是有版本的,现在广泛使用的应该是1.5版本,下一代js2.0听说语法要大变,用ECMAscript的标准,
就是as的标准。
ie7的js更加靠近w3c的标准,但是也不是很符合,
ie6离w3c的标准比较远,
ie6和ie7的js都有微软自己的特定用法和别的浏览器不兼容。
ie6和ie7的js还是有很多不同的。
根据实际使用情况,ie7特性更难把握,不喜欢。
------解决方案--------------------
你可以在页面的onunload方法里面提交后台处理将session失效,但是这样有个问题在进程管理里面直接强制关闭的话,该操作就不会提交的后台了。所以是有危险存在的。我以前就这么做的。如果强制关闭就没办法解决了。
------解决方案--------------------
lz 还是用监听吧,如果用js的话,用户有非法关机的时候,你无法阻止,这样太浪费服务器资源

监听的话lz可以实现以下接口

HttpSessionListener,HttpSessionAttributeListener, ServletRequestListener 来判断用户是否还是在线

lz到网上查一查,很多例子的,在这里我就不把列子贴出来了。我们有保密协议,贴出来不好,如果有问题的话

可以联系我。