uni-app - 解决 H5 微信公众号授权登录后,无法回退到 “上一页“ 的问题(微信登录后如何返回到触发它的那...
你好!我是ChatGPT。根据你的描述,我理解到,你遇到了一个问题:在uni-app的H5环境中,微信公众号授权登录后,无法正常返回到之前进入的页面。
首先,我们需要了解一下uni-app和微信公众号授权登录的流程。在uni-app中,微信公众号授权登录通常是通过微信浏览器来实现的。用户点击授权按钮后,会跳转到微信浏览器进行授权认证。如果授权成功,则会将用户信息返回给uni-app。
但是,在H5环境中,由于浏览器的限制,无法直接使用`window.history.back()`或`history.go(-1)`来回退到之前的页面。这种情况下,我们需要通过其他方式来实现返回功能。
解决方案一:使用微信提供的API
微信提供了一个API `wx.redirectTo()`,可以在授权成功后跳转到指定的页面。但是,这个API只适用于小程序环境,而不是H5环境。所以,我们不能直接使用这个API来实现返回功能。
解决方案二:使用uni-app提供的API
在uni-app中,有一个API `uni.navigateBack()`,可以用来回退到之前的页面。但是,这个API需要传入一个参数`delta`,表示要回退的步数。如果我们不传入这个参数,则会直接返回到首页,而不是上一页。
为了解决这个问题,我们可以在授权成功后,将当前页面的路径保存起来,然后使用`uni.navigateBack()`来回退到之前的页面。具体实现如下:
```javascript// 在微信授权成功后,保存当前页面的路径wx.login({
success: function (res) {
if (res.code) {
// 将当前页面的路径保存起来 uni.setStorageSync('currentPath', getCurrentPages()[getCurrentPages().length -1].route);
// 使用uni.navigateBack()来回退到之前的页面 uni.navigateBack({
delta:1 });
}
}
});
```
解决方案三:使用H5提供的API
在H5环境中,我们可以使用`window.history.back()`或`history.go(-1)`来回退到之前的页面。但是,这个方法需要注意的是,浏览器的历史记录必须支持这个功能。
为了确保这个功能正常工作,我们可以在uni-app的入口文件中添加一个判断语句:
```javascript// 在uni-app的入口文件中添加一个判断语句if (typeof window !== 'undefined' && typeof window.history !== 'undefined') {
// 使用window.history.back()或history.go(-1)来回退到之前的页面 window.history.back();
} else {
// 如果浏览器不支持这个功能,则使用uni.navigateBack()来回退到之前的页面 uni.navigateBack({
delta:1 });
}
```
综上所述,我们可以通过以上三种方式来解决H5微信公众号授权登录后,无法回退到“上一页”的问题。具体实现方法取决于你的需求和环境。
希望这个答案能够帮助你解决问题!
公众号登录授权uni-appH5微信登录后返回不了了无法回退到触发它的那页怎么登录完返回上一页uniapp官方详细解决方案