springmvc浏览器 IE和谷歌 Firefox 区分关闭和刷新 清除token

js:

    var userAgent = navigator.userAgent; 
    var isOpera = userAgent.indexOf("Opera") > -1; //Opera
    var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //IE
    var isIE11 = userAgent.indexOf("rv:11.0") > -1; //IE11
    var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //IEEdge
    if(!isIE && !isEdge && !isIE11) {//chrome  firefox
        var _beforeUnload_time = 0, _gap_time = 0;
        var is_fireFox = navigator.userAgent.indexOf("Firefox")>-1;//firefox
        window.onunload = function (){
            _gap_time = new Date().getTime() - _beforeUnload_time;
            if(_gap_time <= 5){
                $.ajax({
                    type : "POST",
                    url : path + "/textEdit/tokenDelete.action",
                    data : {conferenceId:conferenceId,username:username,token:$("#tokenPar").val()},
                     async : false,  
                    cache : false, 
                    success : function(data) {
                        var response = eval(data);
                        if (response.msg != "") {
                            alert(response.msg);
                        } else {
                            $("#tokenStr").val("");
                        }
                    },
                    error : function(errs) {
                      
                        var sessionStatus = errs.getResponseHeader('sessionstatus');
                        
                        if (sessionStatus == 'timeout'){
                            top.location.href = path + '/ctrl/login.action?errType=1';
                            return;
                        }
                        
                        if (errs.status == '404'|| errs.status == '500'){
                            alert(systemError+'【'+errs.status+'】');
                        } else {
                            alert(errs.responseText);                        
                        }
                    }
                });
            }
            else{
                //refresh
            }
         }
        window.onbeforeunload = function (){ 
            _beforeUnload_time = new Date().getTime();
        };
    } 
    else {

//IE11区分刷新和关闭的flg 默认0
        var ieFlag = $('#ieFlagPar').val();

//关闭浏览器执行这个
        window.onbeforeunload = function (){

            ieFlag = 1;
             $.ajax({
                type : "POST",
                url : path + "/textEdit/textunload.action",
                data : {"ieFlag":ieFlag},
                success : function() {
                    return true;
                }
            });
        }

       //刷新会执行这个
        window.onunload = function (){

             ieFlag = 0;
             $.ajax({
                type : "POST",
                url : path + "/textEdit/textload.action",
                data : {conferenceId:conferenceId,username:username,"ieFlag":ieFlag},
                success : function() {
                    return true;
                }
            });
        }

   //刷新会执行这个
        window.onload = function (){

            ieFlag = 0;
             $.ajax({
                type : "POST",
                url : path + "/textEdit/textload.action",
                data : {conferenceId:conferenceId,username:username,"ieFlag":ieFlag},
                success : function() {
                    return true;
                }
            });
        }
    }

java:

onlyforIE

@RequestMapping(value = "/textunload")
    public Map<String,Object> textunload(HttpServletRequest request,String ieFlag) {
        Map<String, Object> responseMap = new HashMap<String, Object>();
        HttpSession session = request.getSession();

//线程开启后request 不知为何变为null,可能浏览器关闭后session清空
        String conferenceId = (String) session.getAttribute("conferenceId");
        String username = (String) session.getAttribute("username");
        String token = (String) session.getAttribute("token");
        request.getSession().setAttribute("ieFlag", ieFlag);
        session.setAttribute("ieFlag",ieFlag);
        Thread thread = new Thread(new Runnable(){
            @Override
            public void run() {
                try {
                    Thread.sleep(10000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                deleteTokenCh(request,session,ieFlag,conferenceId,username,token);
            }            
        });
        thread.start();    
        return responseMap;
    }
    
    @RequestMapping(value = "/textload")
    public Map<String,Object> textload(HttpServletRequest request,String conferenceId,String username,String ieFlag) {
        Map<String, Object> responseMap = new HashMap<String, Object>();
        request.getSession().setAttribute("ieFlag", ieFlag);
        return responseMap;
    }


    public void deleteTokenCh(HttpServletRequest request,HttpSession session,String ieFlag,String conferenceId,String username,String token) {
        if ("1".equals(session.getAttribute("ieFlag")) || session.getAttribute("ieFlag") == null) {

//删除会执行该方法清除token
            tokenDelete(null,username,conferenceId,token);
        }
    }

!!!!

可参考https://blog.csdn.net/qq_38627581/article/details/78854291

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值