这篇文章主要介绍了基于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('关闭浏览器!');
}