只为 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.getCurrentPosition():如果用户说“不”,则触发回调?
Cordova geolocation navigator.geolocation.getCurrentPosition 错误的窗口访问位置
html5-geolocation : navigator.geolocation.watchPosition 连续回调