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方法来触发值的更新。

当然,这只是我个人的意淫,不要当真,如果你有正确的解释,欢迎留言分享,让更多的小伙伴可以了解原因。


你可能感兴趣的:(js)