vzhen
vzhen

Reputation: 11157

Check if browser has allowed geolocation services in the past?

Currently I can determine if a user has Allowed or Denied browser location services. But how do I detect if a user's browser has previously allowed the permission? I don't want to show the "setting message" to the user again.

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

function allowLocation(position){
// codes
}

function deniedLocation(){
// codes
}

Upvotes: 2

Views: 3042

Answers (2)

Fendi Septiawan
Fendi Septiawan

Reputation: 453

I also facing the same problem. And, after I search and experiment I finally found the answer

You can add this JS code :

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

Then you can use your custom code as needed.

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

Upvotes: 4

Apoorv Saxena
Apoorv Saxena

Reputation: 4236

You can do this simply by making use of HTML5 localstorage which allows you to create key-value pairs:

$("#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;
});

If the location is not previously saved then it asks for user_defined_location, also displaying the ip-located-position, and thereby updates the localStorage, so that the next time the user doesn't have to reset the location according to his preference.

Upvotes: 1

Related Questions