2

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

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

function allowLocation(position){
// codes
}

function deniedLocation(){
// codes
}
4

2 回答 2

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,这样用户下次就不必根据自己的偏好重新设置位置。

于 2012-09-27T19:56:28.560 回答
1

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

您可以添加此 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

于 2018-05-03T09:39:43.670 回答