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

21 篇文章 0 订阅
1 篇文章 0 订阅

 

问题:

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

 

分析:

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

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

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

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

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

 

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

 

解决:

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值