答案 0 :(得分:0)
以下脚本在页面加载时启动,并要求用户使用其位置。我只是从documentation example中添加了一小段代码来检查错误代码-错误代码1表示权限被拒绝。
有多个原因可能会导致拒绝权限,例如,在此处的代码段中,返回了错误代码1,但由于Stack Overflow拒绝通过策略执行地理定位功能,这与JSFiddle类似
您可以改用显示更精确的错误消息。不同的浏览器有稍微不同的错误消息:
您可以改为对错误消息使用以下检查,而不是代码:
if ( err.message == "User denied Geolocation" || err.message == "User denied geolocation prompt" ) {
// Your code goes here
}
var options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
};
function success(pos) {
var crd = pos.coords;
console.log('Your current position is:');
console.log(`Latitude : ${crd.latitude}`);
console.log(`Longitude: ${crd.longitude}`);
console.log(`More or less ${crd.accuracy} meters.`);
}
function error(err) {
// Check for permission denied error
if (err.code == 1) {
alert("Permission denied to use location");
// Add your code here
}
console.warn(`ERROR(${err.code}): ${err.message}`);
}
navigator.geolocation.getCurrentPosition(success, error, options);
答案 1 :(得分:0)
实际上,Oliver意味着单击X按钮之前,您已经能够获得错误消息。在navigator.geolocation.getCurrentPosition未能获取位置信息后,错误提示错误消息。您可以找到“更改”窗口,然后单击“ X”按钮,如果找不到位置,则可以添加代码。
答案 2 :(得分:0)
我们得到了这个双重确认,即IE不支持捕获此事件,对于由此带来的不便,我们深表歉意。 同时,不确定以下变通办法是否可以为您提供帮助。 使用“ a = navigator.geolocation.getCurrentPosition(success);” 代替 “ navigator.geolocation.getCurrentPosition(成功,错误,选项);”然后手动检查a是否为空值,如果为空,则表示客户尚未准备好共享位置。这样可以吗?
谢谢