【问题标题】:How to synchronously detect if user has denied permission to access geolocation data?如何同步检测用户是否拒绝访问地理位置数据?
【发布时间】:2015-04-18 01:54:56
【问题描述】:

参考:http://dev.w3.org/geo/api/spec-source.html#permission_denied_error

如何同步检测(并且不提示对话框要求接受权限)用户之前是否拒绝访问地理位置数据?

【问题讨论】:

    标签: javascript w3c-geolocation


    【解决方案1】:

    您无法同步执行检查。如果他们以前拒绝访问,我建议将值存储到 localStorage:

    navigator.geolocation.getCurrentPosition(function () { 
      // success
      localStorage.setItem('userDeniedGeo', false);
    }, function (err) { 
      // if permission denied
      if (err.code === 1) {
        localStorage.setItem('userDeniedGeo', true);
      }
    });
    

    从那时起,您可以访问 localStorage 以获取答案,而不是使用 navigator,这将是同步的

    localStorage.getItem('userDeniedGeo');
    

    【讨论】:

    • 异步方法呢?我对navigator.geolocation.getCurrentPositionnavigator.geolocation.watchPosition 的问题是它会自动触发权限对话框。
    • 关于您使用localStorage 的解决方案,我建议您不要这样做,因为用户可以随时授予权限,您的脚本不会知道此更改。
    • @GajusKuizinas 不幸的是,没有办法完全按照您的意愿行事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    相关资源
    最近更新 更多