vue浏览器在关闭窗口前触发登出 ?

需求:浏览器在关闭前需要先退出登录
问题:在关闭浏览器时登出的操作还没执行完就关闭了,如何在操作完后再关闭(谷歌不能修改浏览默认弹窗,没法做操作)

mounted(){

window.addEventListener('beforeunload', e => this.beforeunloadHandler(e))

window.addEventListener('unload', e => this.unloadHandler(e))

},

destroyed() {

window.removeEventListener('beforeunload', e => this.beforeunloadHandler(e))

window.removeEventListener('unload', e => this.unloadHandler(e))

},

methods:{

beforeunloadHandler(e) {

this._beforeUnload_time = new Date().getTime();

},

unloadHandler(e) {

this._gap_time = new Date().getTime() - this._beforeUnload_time;

//判断是窗口关闭还是刷新

if (this._gap_time <= 5) {

//如果是登录状态,关闭窗口前,移除用户

this.$store.dispatch('AGENT_LOGOUT')

}

}

}


回答:

换个思路:既然页面都关掉了,那登录状态就不要紧了,所以不用管就行了,人都没了,土葬和火化那都是后人的事情了。

什么?怕别人接着用这个电脑?
这个简单,每次进入网页的时候火速清空上次的登录信息就行了。
如果担心别人离线恢复持久化存储的数据——那这数据就不应该持久化存储。

什么?后端要统计登录时长?
浏览器弄了个叫做 sendBeacon 的接口就是干这个的。

什么? sendBeacon 成功率不是百分之百?
既然要求这么高,不如考虑开一个 WebSocket,后端监听它断掉的事件就知道确切的离线时间了。

以上是 vue浏览器在关闭窗口前触发登出 ? 的全部内容, 来源链接: utcz.com/p/933607.html

回到顶部