uni-app中uni.chooseLocation在H5微信环境安卓下 第二次使用成功按键会失效(第二次指退出至微信再次进入)

uni-app中uni.chooseLocation在H5微信环境安卓下 第二次使用成功按键会失效(第二次指退出至微信再次进入)

开发环境 版本号 项目创建方式
Mac 10.15.7 HBuilderX

示例代码:

uni.chooseLocation({
success:  (res)=> {
},
complete:(com)=>{ 
},
fail:(err)=>{
}  
});

操作步骤:

  1. 直接微信内置浏览器访问
  2. 选择一个地址点击成功
  3. 退回至微信 再次点击选择地址 选择地址页面的成功图标就失效了。

预期结果:

预期能正常点击回到自己的页面

实际结果:

实际地址选择的成功按键失效

bug描述:

uni.chooseLocation() 在安卓手机 微信内置浏览器使用 第一次成功 返回微信 再次进入点击完成图表 就不能返回到h5页面


更多关于uni-app中uni.chooseLocation在H5微信环境安卓下 第二次使用成功按键会失效(第二次指退出至微信再次进入)的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

没人看一下的吗?

更多关于uni-app中uni.chooseLocation在H5微信环境安卓下 第二次使用成功按键会失效(第二次指退出至微信再次进入)的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这个是api bug

该问题是由于微信浏览器内核在页面重新激活时,uni.chooseLocation 返回的页面上下文丢失导致的。在安卓微信环境中,当 H5 页面退至后台(如返回微信主界面)后,再次进入时,部分 API 的调用链可能被重置,导致回调无法正常触发。

解决方案:

  1. 使用 uni.onShow 监听页面显示:在页面显示时重新绑定事件或检查定位状态。
  2. 改用 wx.chooseLocation(需配置微信 JS-SDK):若项目依赖微信环境,可引入微信 JS-SDK,通过 wx.chooseLocation 调用,稳定性更高。
  3. 添加页面状态检查:在 onShow 生命周期中,若检测到地址选择未完成,可手动触发回调或提示用户重新操作。

示例调整:

onShow() {
  // 检查是否有未处理的地址选择结果
  if (this.locationPending) {
    uni.chooseLocation({
      success: (res) => {
        this.locationPending = false;
        // 处理结果
      },
      fail: (err) => {
        this.locationPending = false;
        // 处理失败
      }
    });
  }
}
回到顶部