问题点: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方法来触发值的更新。
当然,这只是我个人的意淫,不要当真,如果你有正确的解释,欢迎留言分享,让更多的小伙伴可以了解原因。