1. 程式人生 > >localStorage在IE11下,兩個視窗值不同步問題

localStorage在IE11下,兩個視窗值不同步問題

問題點:localStorage的值正常情況下是同一個域下是共享的,比如你開啟兩個同域下的頁面,不管兩個頁面是不是獨立一個視窗,他們localStorage的值都應該是共享的,一個改變,另一個也會發生改變。

例如:

開啟兩個相同的地址A,B, 然後在A,B網頁的控制檯分別執行下面程式碼:

    setInterval(()=>{      localStorage.setItem("time",Date.now().toString()); },1000) setInterval(()=>{ console.log(localStorage.getItem("time"
)); },1000)

期望的結果應該是打印出來的時間戳應該是不斷變化的,

測試谷歌,火狐完全沒問題,一如往昔。

接下來測試一下IE11,發現一直列印同一個值。這就值得思考了。

是否不支援,經過檢視相容性,以及能夠列印第一個值,那說明這個可能性可以排除。

劃重點:解決方案是在獲取值的時候先設定一下localStorage.setItem這個方法,你可以隨便設定一個值,例如:

localStorage.setItem("null_item",null);

localStorage.getItem("time");

這樣在IE11也可以獲取到最新值了。

--------------分界線--------------------

我猜測IE這個bug可能是因為取了快取,所以必須要手動呼叫setItem方法來觸發值的更新。

當然,這只是我個人的意淫,不要當真,如果你有正確的解釋,歡迎留言分享,讓更多的小夥伴可以瞭解原因。