我们都知道触发window.onstorage必须满足以下两个条件:当通过localStorage.setItem或sessionStorage.setItem保存(更新)一个storage来保存(更新)这个storage时,它的新值必须和之前的值不同。两个条件很简单:要么初始化存储,因为不存在的存储的值为null;或现有存储的更新示例://初始化storagewindow.localStorage.setItem('a',123);//注册onstorage事件window.onstorage=(e)=>{console.log(e);};//更新storagewindow.localStorage.setItem('a',123);上面最后一行代码不会触发onstorage事件,因为a的值没有变化,前后都是123,所以浏览器判断这次更新无效。由于onstorage事件是由浏览器触发的,如果我们打开同一个域名下的多个页面,并在任意一个页面上执行window.localStorage.setItem方法(并保证文章开头提到的第二个条件是met),那么如果其他页面监听了onstorage事件,就会执行这些页面中的onstorage事件回调Example://http://www.example.com/a.html//http://www.example.com/b.html//http://www.example.com/c.html
