项⽬中踩过的坑之-sessionStorage
总想写点什么,却不知道从何写起,那就从项⽬中踩过的坑开始吧,希望能给可能碰到相同问题的⼩伙伴⼀点帮助。
郑爽整容后张翰惊呆项⽬情景:
有⼀个id,要求通过当前⽹页打开⼀个新页⾯(不是当前页⾯),并把id传给打开的新页⾯,然后新页⾯在初始化时候使⽤这个id,发送请求········。
解决⽅案:
赵磊 模特
第⼀个⼩伙伴选择了cookie,总所周知cookie可以在同源⽹页间共享。我建议他不要⽤,因为cookie在页⾯发送请求的时候都需要⼀同发送的,浪费带宽不好。
沈玉琳的眼睛beat it 歌词然后我骄傲的建议了他使⽤sessionStorage或者localStorage,出于偷懒⽬的~我让他选择了sessionStorage,关闭页⾯就⾃动清
除,localStorage还需要调⽤removeItem进⾏清除。
⼩伙伴就使⽤了sessionStorage,哈哈,果然可以传给打开的新页⾯id信息,还没⾼兴多久,问题⼜来了,⼜有新的⼊⼝打开新的页⾯不需要传递id,这简单呀,就只要打开⼀个然后在新页⾯
世界电影票房排行榜>建档线
使⽤完sessionStorage的id就清空好了,这样就不会出现只想打开新页⾯的时候还出现之前依据⽼id加载页⾯的情况了。想法是简单的,现实是残酷的,实际效果还是按照⽼的id加载的,为啥呀
然后就是各种⽹上查资料,这才发现⾃⼰是如此的天真,在三篇⽂章中看到如下内容,不知道如何引⽤,暂且copy过来吧,写⽂章的都是好⼈········
sessionStorage⽣命周期为当前窗⼝或标签页,⼀旦窗⼝或标签页被永久关闭了,那么所有通过sessionStorage存储的数据也就被清空了。
不同浏览器⽆法共享localStorage或sessionStorage中的信息。相同浏览器的不同页⾯间可以共享相同的localStorage(页⾯属于相同域名和端⼝),但是不同页⾯或标签页间⽆法共享sessionStorage的信息。这⾥需要注意的是,页⾯及标签页仅指顶级窗⼝,如果⼀个标签页包含多个iframe标签且他们属于同源页⾯,那么他们之间是可以共享sessionStorage的。
上⾯红⾊的字总结⼀下就是不同页⾯是⽆法使⽤sessionStorage的,可是为啥通过超链接或者window.open新页⾯的时候是可以传递sessionStorage的呀,感觉有点歪打正着的感觉······经过多次
实验,发现了⼀个惊天秘密,打开的新页⾯的sessionStorage是通过原⽹页的sessionStroage复制传递过来的,也可以理解为新⽹页的sessionStorage是原⽹页的sessionStorage的复制出来的独⽴体,每个⽹页的sessionStorage都是⼀个独⽴的,原来是这样啊。哈哈,下⾯就简单了,只要⽤完就把原⽹页的sessionStorage清掉就好了哈。。。。。突然发现,想偷懒是不可能的了。。。。可是问题⼜来了,我咋知道啥时候新⽹页获取好sessionStorage,是不是有点想喷⾎的赶脚。。。。然后我⼜骄傲的在原⽹页设置好sessionStorage的代码下⾯,使⽤了st=setTimeout(function(){