check if location setting has been turned off in users browser

前端 未结 2 1344
悲哀的现实
悲哀的现实 2020-12-05 05:11

I would like to hide() or show() a button that allows users to use their current location based on whether or not they are currently allowing location to be used in their br

相关标签:
2条回答
  • 2020-12-05 06:01

    Have you read http://www.w3schools.com/html/html5_geolocation.asp

    What you want to do is check the errors to see if they allowed it or denied the request.

    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;
      }
    }
    
    0 讨论(0)
  • 2020-12-05 06:06

    The below code will allow you to check the permission status without invoking the navigator.geolocation permission request.

    Browsers Supported: Chrome(43+), Firefox(46+), Edge and Opera.

    Unsupported: Safari(mac, ios), Internet explorer, Android webview.

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

    Here is the Reference Link.

    Compatibility on other browsers is unknown. I haven't tested it myself but please feel to test yourself and comment below.

    0 讨论(0)
提交回复
热议问题