Есть ли способ определить, дал ли пользователь разрешение на использование navigator.геолокация?
помимо установки cookie в первый раз, есть ли способ определить, дал ли пользователь разрешение для navigator.геолокация для возврата lat / long браузера?
Если есть, что это такое, и это то же самое во всех браузерах или разные во всех браузерах?
эту тему частично ответил в другом месте
по данным API геолокации-Chrome / Safari - управление разрешениями и Визуальные Различия, Chrome запрашивает отозванное одноразовое разрешение. Я еще не закончил читать статью, но, похоже, что хранение разрешений-это не чисто хромированная вещь.
3 ответов
Как насчет использования localStorage, который должен поддерживаться всеми браузерами html5 (которые поддерживают геолокацию)
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
}
//Get latitude and longitude;
function successFunction(position) {
var lat = position.coords.latitude;
var long = position.coords.longitude;
localStorage['authorizedGeoLocation'] = 1;
}
function errorFunction(){
localStorage['authorizedGeoLocation'] = 0;
}
function checkauthorizedGeoLocation(){ // you can use this function to know if geoLocation was previously allowed
if(typeof localStorage['authorizedGeoLocation'] == "undefined" || localStorage['authorizedGeoLocation'] == "0" )
return false;
else
return true;
}
и затем вы проверяете, используя приведенную ниже функцию:
alert(checkauthorizedGeoLocation());
по словам spec, нет - есть только три метода на navigator.geolocation
. Однако сохранение в cookie или локальное хранилище, вероятно, идеально подходит - разрешение также хранится в Агенте пользователя, поэтому оно должно работать правильно, когда пользователь перемещается между браузерами.
см. этот ответ о том, как это сделать с помощью API разрешений: проверьте, если геолокация была разрешена и получить Lat Lon
работает без запроса пользователя, если разрешение было ранее предоставлено.