这篇文章主要介绍了基于JavaScript判断浏览器到底是关闭还是刷新(超准确)的相关资料,需要的朋友可以参考下

// 对于ie,谷歌,360:

// 页面加载时只执行onload

// 页面刷新时,刷新之前执行onbeforeunload事件,在新页面即将替换旧页面时onunload事件,最后onload事件。

// 页面关闭时,先onbeforeunload事件,再onunload事件。

// 对于火狐:

// 页面刷新时,只执行onunload;页面关闭时,只执行onbeforeunload事件

刷新的时候先onbeforeunload,然后去服务端请求数据,在新页面即将替换旧页面时onunload事件。而页面关闭时,先onbeforeunload事件,再立即onunload事件。那么在刷新的时候,onbeforeunload与onunload之间的时间肯定比关闭的时候时间长,所以可以通过两个回调函数之间的时间差判断是刷新还是关闭
var beforeUnloadTime = 0;
var is_fireFox = navigator.userAgent.indexOf("Firefox") > -1; // 判断是否为火狐浏览器
 
window.onunload = function () {
    if (is_fireFox) {
        refreshBrowser();
    } else {
        var interval = new Date().getTime() - beforeUnloadTime;
        // 非火狐浏览器,如果onunload和onbeforeunload之间的时间差小于5ms,则认为是关闭。
        // 如果是刷新,这两个回调之间还有个到服务器请求数据的操作,时间差不会这么小
        if (interval <= 5) {
            closeBrowser();
        } else {
            refreshBrowser();
        }
    }
}
 
window.onbeforeunload = function () {
    beforeUnloadTime = new Date().getTime();
    if (is_fireFox) closeBrowser();
}
 
function refreshBrowser () {
    console.log('刷新浏览器!');
}
 
function closeBrowser () {
    console.log('关闭浏览器!');
}

参考资料