现在的想法是用js检测用户行为,关闭页面时触发js代码,让其执行window.location='logout.php?act=close' 在logout.php页面,注销会话,然后if判断出来自关闭页面,执行window.close()。试了一下,效果还行,只是不能识别页面是刷新还是关闭,网上找了判断代码,IE下正常,FF下无效,然后又找到兼容代码:[引用]下面这个getEvent()函数可以兼容firefox和 ie,只需要在访问事件对象的函数的开始调用getEvent()即可,不用再把事件作为参数传递。[引用] <script language="javascript"> function myfunc() { var evt=getEvent(); var element=evt.srcElement || evt.target; }
function getEvent() { if(document.all) return window.event;//如果是ie func=getEvent.caller; while(func!=null){ var arg0=func.arguments[0]; if(arg0){if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)){return arg0;} } func=func.caller; } return null; } </script>然则,这代码不会用,比如怎么把这段代码改成兼容FF的?<script language="javascript"> window.onbeforeunload = function() //author: meizz { var n = window.event.screenX - window.screenLeft; var b = n > document.documentElement.scrollWidth-20; if(b && window.event.clientY < 0 || window.event.altKey) { alert("是关闭而非刷新"); window.event.returnValue = ""; //这里可以放置你想做的操作代码 } } </script>
在logout.php页面,注销会话,然后if判断出来自关闭页面,执行window.close()。试了一下,效果还行,只是不能识别页面是刷新还是关闭,网上找了判断代码,IE下正常,FF下无效,然后又找到兼容代码:[引用]下面这个getEvent()函数可以兼容firefox和 ie,只需要在访问事件对象的函数的开始调用getEvent()即可,不用再把事件作为参数传递。[引用]
<script language="javascript">
function myfunc()
{
var evt=getEvent();
var element=evt.srcElement || evt.target;
}
function getEvent()
{
if(document.all) return window.event;//如果是ie
func=getEvent.caller;
while(func!=null){
var arg0=func.arguments[0];
if(arg0){if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)){return arg0;} }
func=func.caller;
}
return null;
}
</script>然则,这代码不会用,比如怎么把这段代码改成兼容FF的?<script language="javascript">
window.onbeforeunload = function() //author: meizz
{
var n = window.event.screenX - window.screenLeft;
var b = n > document.documentElement.scrollWidth-20;
if(b && window.event.clientY < 0 || window.event.altKey)
{
alert("是关闭而非刷新");
window.event.returnValue = ""; //这里可以放置你想做的操作代码
}
}
</script>