zoukankan      html  css  js  c++  java
  • js获取关闭浏览器事件

    很多时候我们都在困扰,如何捕获浏览器关闭事件,网上虽然有很多方法,但都不理想,后来终于找到了一个很好地实现方法,大家可以试试。

    Onunload与Onbeforeunload
    Onunload,onbeforeunload都是在刷新或关闭时调用,可以在<script>脚本中通过window.onunload来指定或者在<body>里指定。
    区别在于onbeforeunload在onunload之前执行,它还可以阻止onunload的执行。 
    Onbeforeunload也是在页面刷新或关闭时调用,Onbeforeunload是正要去服务器读取新的页面时调用,此时还没开始读取;
    而onunload则已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用。Onunload是无法阻止页面的更新和关闭的。而 Onbeforeunload 可以做到。

    下面是JavaScript代码:
    /*
     * 使用window.onbeforeunload获取关闭事件,但是这个事件a标签跳转也会调用,
     * 所以通过flag标识为false时,href跳转后禁用后续的onclick事件。
     * */
    var isOnloadFlag = $('#isOnloadFlag').val(); //默认是true
    //所有的a标签添加class 属性onUnload,点击a标签的时候通过参数移除onbeforeunload事件
    
    $(".onUnload").on("click", function (e) {    
        //$(this).removeAttr("onclick"); //这个移除不了onbeforeunload事件
        //var flag = $('#isOnloadFlag').val();
        isOnloadFlag = false;
        var url = $('.onUnload').attr('href');
        window.location.href = url;
    });
    //
    window.onbeforeunload = function(e){
        var flagThis = $('#isOnloadFlag').val();
        var flagbefore = isOnloadFlag;
        if(flagThis&&flagbefore){        
            $.getJSONNoCache("/onUnload.action","GET",{},"text",false,function(data){
                if(data)
                {    
                        //这里写自己的代码                
                }
                else
                {
                }                    
            },function(){
            });  
        }
    }
    
    window.onunload = onunload_handler;    
    function onunload_handler(){   
        $.getJSONNoCache("/onUnload.action","GET",{},"text",false,function(data){
            if(data)
                {                                
                }
            else
                {
                }                    
        },function(){    
        });  
    }    

    经过测试,谷歌和火狐是支持的。

     
  • 相关阅读:
    Luogu P4205 [NOI2005]智慧珠游戏
    Luogu P3321 [SDOI2015]序列统计
    Luogu P2056 [ZJOI2007]捉迷藏
    Luogu P5168 xtq玩魔塔
    2019年一月刷题列表
    [转载]我们都是行走在镜面边缘的人
    [武汉加油] CF830C Bamboo Partition
    [武汉加油] [NOI Online 提高组]最小环
    [武汉加油] luogu P6178 【模板】Matrix-Tree 定理
    [武汉加油] bzoj 5099: [POI2018]Pionek 几何+双指针
  • 原文地址:https://www.cnblogs.com/loong-hon/p/13328492.html
Copyright © 2011-2022 走看看