1、通过时间进行区分刷新与关闭,具体时间按项目定,可以通过localStorage记录下时间进行适合项目的修改
2、因为是复杂请求所以使用fetch进行请求,需要配置keepalive为true保证关闭也保持请求送达
export default {
data() {
return {
_beforeUnload_time: 0,
_gap_time: 0
};
},
methods: {
unloadFn() {
this._gap_time = new Date().getTime() - this._beforeUnload_time;
if (this._gap_time < 5) {
//关闭浏览器执行的代码
fetch(`/logout`, {
method: 'POST',
keepalive: true,
headers: {
Authorization: ''
}
});
}
// localStorage.setItem('_gap_time', this._gap_time);
},
beforeunloadFn(e) {
this._beforeUnload_time = new Date().getTime();
e.preventDefault();
}
},
created() {
window.addEventListener('unload', e => this.unloadFn(e));
window.addEventListener('beforeunload', e => this.beforeunloadFn(e));
}
};