在网上搜了半天,大部分都是用以下这种逻辑解决的,但是对我并不生效
mounted() {
window.addEventListener("beforeunload", (e) => this.beforeunloadHandler(e));
window.addEventListener("unload", (e) => this.unloadHandler(e));
}
methods:{
// 页面关闭之前,触发提示框
beforeunloadHandler(e) {
if (e) {
e = e || window.event;
console.log(e);
if (e) {
e.returnValue = "关闭提示";
}
return "关闭提示";
}
}
},
// 页面关闭
async unloadHandler(e) {
// 退出登录
await this.handleGoLog();
}
destroyed() {
window.removeEventListener("beforeunload", (e) =>
this.beforeunloadHandler(e)
);
window.removeEventListener("unload", (e) => this.unloadHandler(e));
},
经过自己的不断尝试下,我简单粗暴的直接执行退出登录接口,反而生效了
mounted() {
window.addEventListener('beforeunload', e => this.clearLogin()) //clearLogin是我的退出登录的方法
}
methods: {
clearLogin() {
....... //调用退出登录接口的具体实现逻辑
}
}
destroyed() {
window.removeEventListener('beforeunload', e => this.clearLogin())
}
目前亲测可行,至于为什么我暂时还没搞清楚,继续钻研中…