Я использую HTML5 Geolocation для получения пользовательских координат. Но если пользователь не согласен запросить доступ к GeoLocation, это всегда будет проблемой при посещении сайта.
Я хочу получить доступ снова, когда пользователю было отказано в доступе.
Как мне каждый раз спрашивать этого пользователя?
Вы можете скопировать мой код по этой ссылке https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_geolocation_error
var x = document.getElementById("demo");
function getLocation() {
navigator.permissions.query({
name: 'geolocation'
}).then(function(result) {
if (result.state == 'granted') {
//user before accept
alert(result.state)
} else if (result.state == 'prompt') {
alert(result.state)
navigator.geolocation.getCurrentPosition(showPosition, showError);
} else if (result.state == 'denied') {
// user is denied
// I want call request to accept geolocation again
}
});
}
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;
}
}
<p>Click the button to get your coordinates.</p>
<button onclick="getLocation()">Try It</button>
<p id="demo"></p>