ios微信分享失效,不支持history.pushState方法

本文针对iOS微信中使用history.pushState方法导致分享功能失效的问题,提供了一种通过localStorage存储openid并使用window.location.href刷新页面的方法来解决。适用于微信内页需要进行用户授权的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微信分享 ios分享失败
问题定位了很久,安卓没有问题,ios就是分享不成功/(ㄒoㄒ)/~~

背景:
在微信授权的时候,用户同意授权,获取code,如果用户同意授权,页面将跳转至
redirect_uri/?code=CODE&state=STATE。
拿到code之后,可以去获取用户的openid。但是因为code只能用一次,所以在获取到openid之后,利用window.history.pushState()方法,清空了location.search
window.history.pushState({}, '', window.location.origin + window.location.pathname + window.location.hash);
ios微信不支持history.pushState方法,查了很多的资料,贴两个典型的问题

ios微信开网页history.pushState页面链接不改变,4年的老问题了
history.pushState 苹果微信浏览器无效

解决方法:
我直接将openid放到localStorage里面,然后用window.location.href强制重新刷了页面。因为我页面需要保存的变量不多,所以改成window.location.href不是特别麻烦。但是如果页面很复杂,需要保存的变量很多,那就很麻烦,暂时没找到很好的解决办法。

记录一下,有好的解决方式再来更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值