關於sessionStorage儲存登錄隨機碼,實現瀏覽器tab頁切換免登錄功能


前提:sessionStorage瀏覽器的tab頁切換的時候,是不共享的

原理:window的storage事件(H5),localStorage的tab頁是可以共享的

為什么不用localStorage:因為localStorage在關閉瀏覽器后重新打開,還會存在,不符合需求

(function() {
     //這里面的token是你存在sessionStorage里面的用戶標識的key值
        if (!sessionStorage.length) {
            // 這個調用能觸發目標事件,從而達到共享數據的目的
            localStorage.setItem('token', Date.now());
        };
        // 該事件是核心
        window.addEventListener('storage', function(event) {
            if (event.key == 'token') {
                // 已存在的標簽頁會收到這個事件
                localStorage.setItem('sessionStorage', JSON.stringify(sessionStorage));
                localStorage.removeItem('sessionStorage');
            
            } else if (event.key == 'sessionStorage' && !sessionStorage.length) {
                // 新開啟的標簽頁會收到這個事件
                var data = JSON.parse(event.newValue),
                    value;
            
                for (let key in data) {
                    sessionStorage.setItem(key, data[key]);
                }
            }
            //可以在這里寫你是否要免登錄的邏輯
        });
    })();

 

storage事件:打開多個同源頁面(tab頁)的時候,更改sessionstorage和localstorage的時候出發(同一個頁面進行的更改不會觸發事件

event.key 本頁面的storage的所有key值。

event.newValue 本頁面進行的localStorage.setItem行為的時候,新增tab頁鏈接到你的頁面獲得的新的key值的value:即:localStorage.setItem('sessionStorage', JSON.stringify(sessionStorage));行為的sessionStorage被新頁面捕捉到

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM