vue微信H5页面,首次进入授权之后的页面,按手机返回键导致重新授权等问题等解决办法

vue微信H5页面,首次进入授权之后的页面,按手机返回键导致重新授权等问题等解决办法

问题产生的场景:vue微信h5页面,授权后通常会进入到某个指定到页面,此时若用户点击手机的返回键或浏览器的返回键时,页面会重新授权和跳转,但此时code已经失效了,获取微信的openId就会导致失败,因此需要阻止用户点击返回键,这里想到但办法是在进行微信授权前存个缓存值,例如

window.sessionStorage.setItem('historyNum','1')

授权后改变historyNum的值,在点击返回时判断这个值是否为1,若为1表示正常授权后,若不为1表示已经授权了,此时就可以做一些阻止授权的方法等,具体可能需要根据业务需求来改动.

PS:欢迎加入vue技术交流群(864583465)进行更多问题的探讨,你的问题将是我们大家共同进步的关键

Vue2开发H5页面时,可通过以下两种情况禁止手机自带返回按钮返回到上一页。 ### 通用禁止物理返回的方法 在Vue组件中,可在`mounted`生命周期中往历史记录添加当前页面URL,同时监听`popstate`事件,在页面销毁时取消监听,避免影响其他路由页面。示例代码如下: ```vue <template> <div> <!-- 页面内容 --> </div> </template> <script> export default { mounted() { if (window.history && window.history.pushState) { // 往历史记录里面添加一条新的当前页面的url history.pushState(null, null, document.URL); // 给 popstate 绑定一个方法 监听页面刷新 window.addEventListener('popstate', this.goBack, false); } }, methods: { goBack() { // 阻止返回操作,可根据需求添加逻辑 history.pushState(null, null, document.URL); } }, beforeDestroy() { // 页面销毁时,取消监听 window.removeEventListener('popstate', this.goBack); } }; </script> ``` ### 针对iOS微信内置浏览器的特殊处理 若需针对iOS微信内置浏览器进行特殊处理,可在组件中判断设备和浏览器类型,根据不同情况处理返回操作。示例代码如下: ```vue <template> <div> <!-- 页面内容 --> </div> </template> <script> export default { mounted() { this.isBack(); if (window.history && window.history.pushState) { history.pushState(null, null, document.URL); window.addEventListener('popstate', this.goBack, false); } }, methods: { isBack() { var u = navigator.userAgent; var ua = window.navigator.userAgent.toLowerCase(); var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // 首次进入马上点返回 if (isIOS) { if (ua.match(/micromessenger/i) === 'micromessenger') { // 微信 if (localStorage.getItem('login_go') === 'null') { wx.closeWindow(); } if (this.$route.name === localStorage.getItem('login_go') || this.$route.name === null) { wx.closeWindow(); } } } localStorage.setItem('login_go', this.$route.name); }, goBack() { history.pushState(null, null, document.URL); } }, beforeDestroy() { window.removeEventListener('popstate', this.goBack); } }; </script> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值