APP内嵌H5中使用sessionStorage碰到的问题:herf新打开窗口的情况下session无法获取到
原因:sessionStorage对象存储特定于某个会话的数据,也就是该数据只保持到浏览器关闭。就像会话cookie。sessionStorage可以跨越页面刷新而存在。
sessionStorage的访问限制比localStorage更严苛一点,除了协议、主机名、端口外,还要求在同一窗口(也就是浏览器的标签页)下。
例:
A.html页面需要记录一条数据{a:1,b:2};
sessionStorage.setItem("data","{a:1,b:2}");
A页面获取正常
B.html页面取出使用;
sessionStorage.getItem("data");// 获取结果为null
如果项目不是单页面复应用,AB是两个html文件,需要跳转href的。我们会发现有些Andiron系统的浏览器在B页获取是到的结果是null (如:vivo手机自带的世界之窗浏览器)。
经过分析,其实这并不是这个浏览器不支持sessionStorage,因为你还是能获取到sessionStorage这个对象的。而是因为sessionStorage是一个当前窗口的数据存储格式,有些浏览器在跳转新页面的时候他系统是打开了一个新的webView,把原来的关了,也就相当于我们在浏览器打开了一个新窗口。这样他就跟我们的sessionStorage原理冲突了,在新页面当然就获取不到咯。
所以建议大家做移动端的时候如果不是单页面复应用的的项目最好不要使用sessionStorage
这种情况可以用用locaStorage做桥接