如何利用VUE監(jiān)聽網(wǎng)頁關(guān)閉并執(zhí)行退出操作
最近在項目中遇到了一個需求,需要監(jiān)聽頁面關(guān)閉,在頁面關(guān)閉時彈出提示框,并在離開頁面時觸發(fā)退出操作。因為是用VUE進(jìn)行開發(fā)的,所以先在mounted()中創(chuàng)建頁面關(guān)閉的監(jiān)聽
window.addEventListener("beforeunload", (e) => this.beforeunloadHandler(e));
window.addEventListener("unload", (e) => this.unloadHandler(e));第一個監(jiān)聽的是頁面關(guān)閉之前,對應(yīng)的方法可以寫做
// 頁面關(guān)閉之前,觸發(fā)提示框
beforeunloadHandler(e) {
if (e) {
e = e || window.event;
console.log(e);
if (e) {
e.returnValue = "關(guān)閉提示";
}
return "關(guān)閉提示";
}
},第二個監(jiān)聽的是頁面關(guān)閉的時候,這里面可以調(diào)用退出登錄的方法,但是記得要用同步調(diào)用的方法,axios默認(rèn)的是異步調(diào)用的方法
// 頁面關(guān)閉
async unloadHandler(e) {
// 退出登錄
await this.handleGoLog();
},最后記得在destroyed()中,注銷監(jiān)聽
destroyed() {
window.removeEventListener("beforeunload", (e) =>
this.beforeunloadHandler(e)
);
window.removeEventListener("unload", (e) => this.unloadHandler(e));
},補充知識:vue實現(xiàn)關(guān)閉瀏覽器退出登錄功能(區(qū)別關(guān)閉和刷新)
在實現(xiàn)單點登錄時,發(fā)現(xiàn)關(guān)閉瀏覽器后,并不會自動退出登錄
? data() {
? ? return {
? ? ? gap_time: 0,
? ? ? beforeUnload_time: 0,
? ? };
? },
? methods: {
? ? // 關(guān)閉窗口之前執(zhí)行
? ? beforeunloadHandler() {
? ? ? this.beforeUnload_time = new Date().getTime();
? ? },
? ? unloadHandler() {
? ? ? this.gap_time = new Date().getTime() - this.beforeUnload_time;
? ? ? //判斷是窗口關(guān)閉還是刷新 毫秒數(shù)判斷 網(wǎng)上大部分寫的是5
? ? ? if (this.gap_time <= 10) {
? ? ? ? logOut() // 退出登錄接口 這里應(yīng)當(dāng)換為個人的登出方法
? ? ? } else {
? ? ? }
? ? },
? },
? destroyed() {
? ? // 移除監(jiān)聽
? ? window.removeEventListener("beforeunload", () => this.beforeunloadHandler());
? ? window.removeEventListener("unload", () => this.unloadHandler());
? },
? mounted() {
? ? // 監(jiān)聽瀏覽器關(guān)閉
? ? window.addEventListener("beforeunload", () => this.beforeunloadHandler());
? ? window.addEventListener("unload", () => this.unloadHandler());
? }然后,再關(guān)閉瀏覽器后,就會自動調(diào)用我們的退出登錄函數(shù)了。
總結(jié)
到此這篇關(guān)于如何利用VUE監(jiān)聽網(wǎng)頁關(guān)閉并執(zhí)行退出操作的文章就介紹到這了,更多相關(guān)VUE監(jiān)聽網(wǎng)頁關(guān)閉并退出內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue使用vue-pdf實現(xiàn)PDF文件預(yù)覽
這篇文章主要為大家詳細(xì)介紹了Vue如何使用vue-pdf實現(xiàn)PDF文件預(yù)覽的功能,文中的示例代碼講解詳細(xì),具有一定的參考價值,感興趣的可以了解一下2023-03-03
elementUI?el-table二次封裝的詳細(xì)實例
在項目中會多次使用表格展示數(shù)據(jù),不對這個table進(jìn)行二次封裝成我們自己想要的,重復(fù)的代碼量的工作會比較大,下面這篇文章主要給大家介紹了關(guān)于elementUI?el-table二次封裝的相關(guān)資料,需要的朋友可以參考下2023-03-03
v-show和v-if的區(qū)別?及應(yīng)用場景
這篇文章主要介紹了v-show和v-if的區(qū)別及應(yīng)用場景,vue中v-show與?v-if的作用效果是相同的,都能控制元素在頁面是否顯示,但是也有一定的區(qū)別,下面文章梳理總結(jié)v-show和v-if的區(qū)別,需要的小伙伴可以參考一下2022-06-06
vue-calendar-component 封裝多日期選擇組件的實例代碼
這篇文章主要介紹了vue-calendar-component 封裝多日期選擇組件,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
Vue實現(xiàn)父子組件之間的數(shù)據(jù)傳遞
在前端開發(fā)中,Vue.js 是一個非常流行的框架,因其易學(xué)易用而受到許多開發(fā)者的青睞,其中,組件是 Vue 的核心概念之一,組件之間的數(shù)據(jù)傳遞是開發(fā)中的常見需求,本文將探討如何在 Vue 中實現(xiàn)父子組件之間的數(shù)據(jù)傳遞,需要的朋友可以參考下2024-11-11
使用VUE+iView+.Net Core上傳圖片的方法示例
這篇文章主要介紹了使用VUE+iView+.Net Core上傳圖片的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01

