17

除了第一次设置cookie之外,有没有办法检测用户是否已经允许navigator.geolocation返回浏览器的纬度/经度?

如果有,它是什么?它在所有浏览器中都相同还是在所有浏览器中不同?

该主题已在其他地方部分回答

根据GeoLocation API – Chrome / Safari – Permission management and Visual Differences,Chrome 要求一个可撤销的一次性权限。我还没有读完这篇文章,但似乎权限存储并不是纯 Chrome 要做的事情。

4

3 回答 3

26

如何使用所有 html5 浏览器(支持 geoLocation)都应该支持的 localStorage

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());

如果您需要检查,这是 jsfiddle

于 2013-05-21T21:25:41.200 回答
4

根据规范,不,只有三种方法navigator.geolocation。然而,保存到 cookie 或本地存储可能非常合适 - 权限也存储在用户代理中,因此当用户在浏览器之间移动时它应该可以正常工作。

于 2013-05-18T14:20:23.093 回答
1

请参阅有关如何使用 Permissions API 执行此操作的答案:检查是否允许地理定位并获取纬度

如果先前已授予权限,则无需提示用户即可工作。

于 2017-09-14T04:20:41.493 回答