瀏覽器關閉 退出用戶

首先感謝這位大佬的帖子 https://www.cnblogs.com/miam/p/11387779.html

開始本地測試驗證

思路

1):首次打開頁面執行onload方法,如果第一次打開,localTime,sesTime,numbers都沒有值,執行第一個If語句,清除localStorage和sessionStorage的值,重新給localTime,sesTime賦值,numbers++,此時numbers=0。

2):刷新頁面先執行onbeforeunload 方法,當前localTime,sesTime有值且相等,numbers--,此時numbers=0;然後再執行onload方法。此時localTime,sesTime有值,numbers++,此時numbers=1;

3):再次打開新的標籤頁,執行onload方法,此時localTime有值並且numbers=1,執行第二個if語句,給sesTime賦值。numbers++,此時numbers=2;

`// 刷新頁面時,首先進入onbeforeunload 方法 window.onbeforeunload = () => {

let numbers = window.localStorage.getItem('numbers');

const sesTime = window.sessionStorage.getItem('sesTime');

const localTime = window.localStorage.getItem('localTime');

// 當localTime 沒有值,並且sesTime === localTime,減去當前頁。

if (localTime !== 'NaN' && localTime !== null && sesTime === localTime) {

numbers = parseInt(numbers) - 1;

window.localStorage.setItem('numbers', numbers)
// 退出登錄
// eslint-disable-next-line no-underscore-dangle
window.g_app._store.dispatch({
  type: 'login/logout',
});

}

};

window.onload = () => {

let time = ''; // 計算打開的標籤頁數量 let numbers = window.localStorage.getItem('numbers');

const sesTime = window.sessionStorage.getItem('sesTime'); // 首次登錄的時間 const localTime = window.localStorage.getItem('localTime');

// 當numbers無值或者小於0時,爲numbers 賦值0

if (numbers === 'NaN' || numbers === null || parseInt(numbers) < 0) {

numbers = 0;

}

// sesTime || localTime 沒有值,並且numbers爲0時,清除localStorage裏的登錄狀態,退出到登錄頁面

if ((sesTime === null || sesTime === 'NaN' || localTime === null ||

localTime === 'NaN') && parseInt(numbers) === 0) {

localStorage.clear();

sessionStorage.clear();

// 爲localTime和sesTime賦值,記錄第一個標籤頁的時間

time = new Date().getTime();

window.sessionStorage.setItem('sesTime', time);

window.localStorage.setItem('localTime', time);

}

// 當time ,localTime 有值,並且sesTime != localTime時,爲sesTime賦值

if (!time && localTime != 'NaN' && localTime != null && sesTime != localTime) {

window.sessionStorage.setItem('sesTime', localTime);

}

// 最後保存當前是第幾個標籤頁

numbers = parseInt(numbers) + 1;

window.localStorage.setItem('numbers', numbers);

};`

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章