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

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

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

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

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

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

【问题讨论】:

标签: javascript


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 2019-07-01
    • 1970-01-01
    相关资源
    最近更新 更多