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

Tom*_*Tom 14 javascript browser jquery geolocation

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

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

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

谢谢你的任何建议.

Bot*_*Bot 28

你读过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;
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我的浏览器支持 GPS,但我已禁用它。在这种情况下,我什么也得不到。我应该如何检测位置是否被禁用? (3认同)

Nou*_*had 13

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

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

这是参考链接.

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