有没有办法检测用户是否已经授予使用 navigator.geolocation 的权限?
除了第一次设置cookie之外,有没有办法检测用户是否已经允许navigator.geolocation返回浏览器的纬度/经度?
Apart from setting a cookie the first time round, is there a way of detecting whether a user has already given permission for navigator.geolocation to return the lat/long of the browser?
如果有,它是什么?它在所有浏览器中都相同还是在所有浏览器中不同?
If there is, what is it and is it the same across all browsers or different across all browsers?
此主题已在其他地方部分回答
根据 GeoLocation API – Chrome/Safari – 权限管理和视觉差异,Chrome 请求可撤销的一次性权限.我还没有读完这篇文章,但似乎权限存储并不是纯 Chrome 要做的事情.
According to GeoLocation API – Chrome / Safari – Permission management and Visual Differences, Chrome asks for a revokable one-time permission. I haven't finished reading the article, but it would seem that storage of permissions is not a purely-Chrome thing to do.
推荐答案
如何使用localStorage 应该被所有html5浏览器支持(支持geoLocation)
What about using localStorage which should be supported by all html5 browsers (that support geoLocation)
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;
}
然后您使用以下功能进行检查:
And then you check using the below function :
alert(checkauthorizedGeoLocation());
这是 jsfiddle 如果您需要检查
相关文章