有没有办法检测用户是否已经授权使用navigator.geolocation?

时间:2013-05-14 07:21:21

标签: html5 cross-browser geolocation user-permissions w3c-geolocation

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

如果有,它是什么,所有浏览器是否相同或所有浏览器都不同?

此主题为partially answered elsewhere

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

3 个答案:

答案 0 :(得分:24)

如何使用所有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());

This is the jsfiddle if you need to check

答案 1 :(得分:4)

根据spec,没有 - navigator.geolocation上只有三种方法。但是,保存到cookie或本地存储可能是完全合适的 - 权限也存储在用户代理中,因此当用户在浏览器之间移动时它应该正常工作。

答案 2 :(得分:1)

请使用权限API查看有关如何执行此操作的答案:Check if Geolocation was allowed and get Lat Lon

如果先前已授予许可,则不会提示用户工作。