检查用户浏览器中是否已关闭位置设置

时间:2013-02-13 20:01:04

标签: javascript jquery browser geolocation

我想隐藏()或show()一个按钮,允许用户根据他们当前是否允许在浏览器设置中使用位置来使用他们的当前位置。 以下代码仅检查浏览器是否支持地理位置,而不是特定用户是否允许它。

if (navigator.geolocation)  {
   navigator.geolocation.getCurrentPosition(showPosition);
   } else  {
 x.innerHTML="Geolocation is not supported by this browser.";}
 } 

我是否可以检测其浏览器设置的布尔值,让我知道当前是否允许位置?

感谢您的任何建议。

2 个答案:

答案 0 :(得分:23)

您是否阅读过http://www.w3schools.com/html/html5_geolocation.asp

您要做的是检查错误,看看是否允许错误或拒绝请求。

function getLocation() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition,showError);
  } else {
    x.innerHTML = "Geolocation is not supported by this browser.";
  }
}

function showPosition(position) {
  x.innerHTML = "Latitude: " + position.coords.latitude + "<br>Longitude: " + position.coords.longitude;    
}

function showError(error) {
  switch(error.code) {
    case error.PERMISSION_DENIED:
      x.innerHTML = "User denied the request for Geolocation."
      break;
    case error.POSITION_UNAVAILABLE:
      x.innerHTML = "Location information is unavailable."
      break;
    case error.TIMEOUT:
      x.innerHTML = "The request to get user location timed out."
      break;
    case error.UNKNOWN_ERROR:
      x.innerHTML = "An unknown error occurred."
      break;
  }
}

答案 1 :(得分:9)

以下代码可让您检查权限状态,而无需在Chrome 43+和Firefox 46 +上调用navigator.geolocation权限请求。

navigator.permissions && navigator.permissions.query({name: 'geolocation'}).then(function(PermissionStatus) {
    if(PermissionStatus.state == 'granted'){
          //allowed
    }else{
         //denied
    }
})

这是Reference Link

其他浏览器的兼容性未知。我自己没有测试过,但请测试自己并在下面评论。