vue項目localstorage監(jiān)聽登錄用戶信息變化不同tab頁自動更新

如果本文對您有幫助,請給我點贊哦~ 謝謝~

問題背景:

vue做了一個會員服務(wù)系統(tǒng),用戶先后用兩個賬戶user1,user2在chrome中兩個tab頁進行登錄,系統(tǒng)的右上角會顯示用戶信息(比如用戶名:user1),當(dāng)user2登陸后,user1那個tab頁的用戶信息還是顯示的user1但是在頁面中進行操作后臺session信息其實已經(jīng)是user2了,為了不給用戶造成誤導(dǎo),必須把信息實現(xiàn)更新

預(yù)期效果:

用戶先后用兩個賬戶user1,user2在chrome中兩個tab頁進行登錄,系統(tǒng)的右上角會顯示用戶信息,當(dāng)user2登陸后,user1那個tab頁的用戶信息自動跟新成user2

解決方法:

本來是一個很簡單的問題,奈何基礎(chǔ)功不扎實求助網(wǎng)絡(luò),茫茫知識海洋中各種千奇百怪的解決方案,比如重寫prototype什么的,真是服了。最后發(fā)現(xiàn)其實解決方法很簡單。就是在顯示user1的那個vue頁面mounted里加上下面的代碼,并在用戶名所在元素上綁定id="username"即可。


  window.addEventListener('storage', function(e){

        if (e.key === 'user'){

            const currentUser = e.newValue? JSON.parse(e.newValue).userName : JSON.parse(e.oldValue).userName;

            const output = document.getElementById('username');

            output.innerHTML = currentUser;

        }

    })

適用范圍:

我只測了chrome瀏覽器,不過IE應(yīng)該也行,自己試試唄

另外不同host的由于localstorage不跨域所以當(dāng)前方法不適用


如果本文對您有幫助,請給我點贊哦~ 謝謝~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容