微信公众号通过会话框进入页面获取localStorage为空的bug - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 公众号相关 >

微信公众号通过会话框进入页面获取localStorage为空的bug

发表时间:2020-9-24

发布人:葵宇科技

浏览次数:118

问题:

如果点击公众号的菜单进入详情是能获取到 localStorage的,但是通过公众号返回的链接进入详情,拿到的localStorage为{}

分析:

【可能原因1】-存储时间短:看网上有说,localStorage在微信上存储时间只有6 7分钟,但是我第一次点击进去,存储了本地数据后,马上重新进去,还是获取为空。

【可能原因2】-取出的是json格式,不是对象:如果你是用对象格式存进本地数据的,那么取出来的确实是json字符串,需要用JSON.parse(localStorage.getItem('user')).userId 这样转换一下。这里我转换了,拿到的依然是空。

【可能原因3】-会话框跟H5不共用:虽然我两次从公众号会话框进入详情没有获取到localStorage,但是我两次通过菜单进入能正常获取到localStorage。

但其实有个诡异的情况,不管通过哪种方式进入,控制台查看的本地存储都是有数据,且数据正常。

那么问题就来了,会话框到底是什么机制,为什么从它返回的链接进入就获取不到本地存储数据呢?

原因大概是:每次从对话框进入页面都会打开一个新的webView容器,而这个容器和点击菜单进入的容器不是同一个,所以它获取不了原来存储的本地数据。并且,由于它每次打开一个新的容器,即时你打开存储了数据后,关闭后重新打开,在新的容器上也拿不到上个容器的数据,所以localStorage还是空的。

解决:

使用cookie存储和读取相应的数据

相关案例查看更多