目前我已经知道用户是允许还是拒绝浏览器位置权限。 但是,如何检测用户的浏览器是否曾允许该权限? 所以我不会再为用户显示“设置信息”。
$("#updateLocation").click(function(e){
e.preventdefault;
navigator.geolocation.getCurrentPosition(allowLocation,deniedLocation);
return false;
});
function allowLocation(position){
// codes
}
function deniedLocation(){
// codes
}
答案 0 :(得分:1)
您只需使用HTML5 localstorage 即可创建键值对,即可实现此目的:
$("#updateLocation").click(function(e){
e.preventdefault;
if(localStorage.location == undefined){
var ip-located-geo-location = navigator.geolocation.getCurrentPosition();
// code to get ip-located geolocation
var user_defined_location = prompt("Please enter your location", ip-located-geo-location);
localStorage.location = user_defined_location;
}
else{
// use localStorage.location
}
return false;
});
如果先前未保存位置,则它会询问user_defined_location,同时显示ip-located-position,从而更新localStorage,以便下次用户无需根据自己的喜好重置位置
答案 1 :(得分:0)
我也面临同样的问题。并且,在我搜索和实验后,我终于找到了答案
您可以添加此JS代码:
navigator.permissions.query({name:'geolocation'}).then(function(result) {
// Will return ['granted', 'prompt', 'denied']
console.log(result.state);
});
然后您可以根据需要使用自定义代码。
来源:https://developer.mozilla.org/en-US/docs/Web/API/Navigator/permissions