复现场景: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。
麻烦提供个复现路径 这边测试下
<div> getCurrentPosition 接口测试,非iOS16.4及以上环境,执行这段代码会显示弹框,内容是success或failed,但是在iOS16.4及以上的环境,不会显示弹框。 <script> navigator.geolocation.getCurrentPosition(() => alert('success'), () => alert('failed')); </script> </div>
这个是复现的HTML代码,你们测试可以在微信浏览器内执行这个HTML片段,在iOS16.4及以上的环境不会展示任何弹框,属于bug。