收藏
回答

navigator.geolocation.getCurrentPosition 不会触发回调函数?

复现场景:iOS16.4 的小程序WebView组件,公众号H5页面均复现。

问题表现:https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition 通过MDN文档可知,该API用于通过浏览器获取GPS坐标,无论是否获取成功,均会执行这个API的第一个参数或第二个参数进行后续业务逻辑的执行。

getCurrentPosition(success, error, options)

在iOS16.4的微信浏览器或者小程序Webview中,该接口没有按照标准浏览器的行为进行回调函数的执行,导致流程阻塞,后续业务无法正常执行。

复现代码:

在微信浏览器打开H5页面,执行代码

navigator.geolocation.getCurrentPosition(() => console.log('success'), () => console.log('error'));


执行结果为,既不会输出 success,也不会输出 error。

回答关注问题邀请回答
收藏

2 个回答

  • 社区技术运营专员-Jahozheng
    社区技术运营专员-Jahozheng
    2023-04-28

    麻烦提供个复现路径 这边测试下

    2023-04-28
    有用
    回复 3
  • Mashiro
    Mashiro
    2023-04-28
    <div>
      getCurrentPosition 接口测试,非iOS16.4及以上环境,执行这段代码会显示弹框,内容是success或failed,但是在iOS16.4及以上的环境,不会显示弹框。
      <script>
      navigator.geolocation.getCurrentPosition(() => alert('success'), () => alert('failed'));
      </script>
    </div>
    


    这个是复现的HTML代码,你们测试可以在微信浏览器内执行这个HTML片段,在iOS16.4及以上的环境不会展示任何弹框,属于bug。

    2023-04-28
    有用 1
    回复
登录 后发表内容