只为 navigator.geolocation.getCurrentPoistion 阻塞一次

Posted

技术标签:

【中文标题】只为 navigator.geolocation.getCurrentPoistion 阻塞一次【英文标题】:Only block once for navigator.geolocation.getCurrentPoistion 【发布时间】:2018-08-14 18:59:45 【问题描述】:

这似乎是以下行为的默认行为:

navigator.geolocation.getCurrentPosition((position) => 
  // doSomethingWithPoistion
)

如果被拒绝,就会这样做。所有后续调用都被拒绝。有没有办法让用户在弹出窗口中点击阻止时,仅用于这种即时交互?

也就是说,我在加载页面时使用了定位服务。我还有一个提示相同功能的按钮。如果用户拒绝位置服务,该按钮将不起作用(只需获取另一个错误回调)。

有没有办法让负载拒绝仅针对此回调,并且不会将其设置为继续拒绝后续的getCurrentPosition 调用?

【问题讨论】:

ask for geolocation permission again if it was denied的可能重复 【参考方案1】:

从我在 Chrome 浏览器中重新制定时所知道的情况来看,与其说是地理定位调用的拒绝,不如说是地理定位调用的阻止

运行您在 Chrome 中提供的代码 sn-p 时,只需通过点击 X 按钮退出权限弹出窗口,我就可以在每次运行代码时触发权限提示。如果我点击Block 按钮关闭权限弹出窗口,该网站将添加到我在 Chrome 中被阻止的网站列表中,并且不再请求权限。

下面链接的这个解决方案似乎是处理这种情况的更好方法之一。它建议您检查地理定位权限的当前状态,如果当前被拒绝,请通知用户。

https://***.com/a/42476603/6121503

【讨论】:

以上是关于只为 navigator.geolocation.getCurrentPoistion 阻塞一次的主要内容,如果未能解决你的问题,请参考以下文章

navigator.geolocation 给出错误的结果

navigator.geolocation.getCurrentPosition():如果用户说“不”,则触发回调?

Cordova geolocation navigator.geolocation.getCurrentPosition 错误的窗口访问位置

navigator.geolocation 和回调的回调

html5-geolocation : navigator.geolocation.watchPosition 连续回调

反应原生 navigator.geolocation.getCurrentPosition 问题