我一直用ff,没有问题,关闭标签就得重登录

解决方案 »

  1.   

    现在的想法是用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>