最簡單的解決辦法 - a標簽添加屬性 rel="opener"
Chrome對於a標簽默認添加了noopener屬性,所以通過a標簽跳轉,會丟失新頁面的控制權,sessionStorage自然也就丟失了,我們只需要在a標簽上加上 rel="opener" 就行了。
在Chrome瀏覽器89版本前,當前會話頁面指的是當瀏覽器窗口沒有關閉時,窗口內同域網站可以共享此數據(同源瀏覽器多個窗口不共享),當頁面全部關閉或窗口關閉后,sessionStorage數據會被摧毀,所以你用a標簽跳轉還是js跳轉都會共享sessionStorage。
在2021年3月初Chrome瀏覽器進行了批量更新,更新到89版本后,通過a標簽target="_blank"跳轉到新頁面時sessionStorage就會丟失。Chrome這一更新可能會導致很多網站的sessionStorage丟失。