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

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

原理:window的storage事件(H5),localStorage的tab頁是能夠共享的session

爲何不用localStorage:由於localStorage在關閉瀏覽器後從新打開,還會存在,不符合需求spa

(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的時候出發(同一個頁面進行的更改不會觸發事件localstorage

event.key 本頁面的storage的全部key值。code

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

相關文章
相關標籤/搜索