除了第一次设置cookie之外,有没有办法检测用户是否已经授予navigator.geolocation权限以返回浏览器的纬度/经度?
如果有,它是什么,所有浏览器是否相同或所有浏览器都不同?
此主题为partially answered elsewhere
根据GeoLocation API – Chrome / Safari – Permission management and Visual Differences,Chrome要求获得可撤销的一次性许可。我还没有读完这篇文章,但似乎存储权限并不是纯粹的Chrome操作。
答案 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());
答案 1 :(得分:4)
根据spec,没有 - navigator.geolocation
上只有三种方法。但是,保存到cookie或本地存储可能是完全合适的 - 权限也存储在用户代理中,因此当用户在浏览器之间移动时它应该正常工作。
答案 2 :(得分:1)
请使用权限API查看有关如何执行此操作的答案:Check if Geolocation was allowed and get Lat Lon
如果先前已授予许可,则不会提示用户工作。