对于ie,谷歌,360:
//页面加载时只执行onload
//页面刷新时,刷新之前执行onbeforeunload事件,在新页面即将替换旧页面时onunload事件,最后onload事件。
//页面关闭时,先onbeforeunload事件,再onunload事件。
对于火狐:
//页面刷新时,只执行onunload;页面关闭时,只执行onbeforeunload事件
刷新的时候先onbeforeunload,然后取服务端请求数据,在新页面即将替换旧页面时onunload事件,而页面关闭时,先onbeforeunload事件,再立即onunload事件。那么在刷新的时候,onbeforeunload与onunload之间的时间肯定比关闭的时候时间长,
具体实现
通过判断onunload 和 onload的时间间隔是否小于某一个时间间隔来判断刷新还是关闭
let time = localStorage.getItem('leaveTime')
let nowtime = new Date().getTime();
console.log((nowtime - time) < 300?:刷新':'关闭') ;
window.onunload = function(){
localStorage.setItem('leaveTime',new Date().getTime())
}