【问题标题】:Check if browser has allowed geolocation services in the past?检查浏览器过去是否允许地理定位服务?
【发布时间】:2012-09-27 19:15:38
【问题描述】:

目前我可以确定用户是否允许或拒绝浏览器定位服务。但是如何检测用户的浏览器之前是否允许该权限?我不想再次向用户显示“设置消息”。

$("#updateLocation").click(function(e){
      e.preventdefault;
      navigator.geolocation.getCurrentPosition(allowLocation,deniedLocation);
      return false;
});

function allowLocation(position){
// codes
}

function deniedLocation(){
// codes
}

【问题讨论】:

  • 您是否要覆盖浏览器请求用户允许您的应用程序访问地理位置的事件?
  • 实际上并没有覆盖,只是为用户提供一个选项来更新他们的位置,如果用户之前点击了允许。 “设置信息”将不再显示。 @Cody

标签: html browser geolocation


【解决方案1】:

您可以简单地通过使用 HTML5 localstorage 来做到这一点,它允许您创建键值对:

$("#updateLocation").click(function(e){
      e.preventdefault;
      if(localStorage.location == undefined){
            var ip-located-geo-location = navigator.geolocation.getCurrentPosition();
            // code to get ip-located geolocation
            var user_defined_location = prompt("Please enter your location", ip-located-geo-location);
            localStorage.location = user_defined_location;
      }
      else{
            // use localStorage.location
      }
      return false;
});

如果该位置之前没有保存,那么它会询问 user_defined_location,同时显示 ip-located-position,从而更新 localStorage,这样用户下次就不必根据自己的偏好重置位置.

【讨论】:

    【解决方案2】:

    我也面临同样的问题。而且,经过我的搜索和实验,我终于找到了答案

    你可以添加这个JS代码:

    navigator.permissions.query({name:'geolocation'}).then(function(result) {
      // Will return ['granted', 'prompt', 'denied']
      console.log(result.state);
    });
    

    然后您可以根据需要使用您的自定义代码。

    来源:https://developer.mozilla.org/en-US/docs/Web/API/Navigator/permissions

    【讨论】:

      猜你喜欢
      • 2012-04-22
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多