我使用getCurrentPosition
对象中的navigator.geolocation
函数。当用户选择共享本地化或永不共享时我没有问题,但是当用户选择"这次不是"我无法输入功能错误。这是我的代码:
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition, getLocationIp);
} else {
console.log ( "Geolocation is not supported by this browser.");
}
};
function showPosition(position) {
console.log( "Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude);
cargarArticulosInicio(position.coords.latitude,position.coords.longitude);
}
function getLocationIp() {
//function get location from ip
}
答案 0 :(得分:1)
不幸的是,这是浏览器团队对 Firefox :
的决定Bug 675533 - Share location- "Not Now" Doesn't fire error callback
这是设计的。 Not Now隐藏弹出窗口但允许您稍后做出决定,因此它不会调用任何回调。永不共享将触发错误回调。
理由是,如果用户选择“不是现在”,则应将其解释为“我现在不想选择”,因此就好像他/她从不回答问题一样。
至少在他/她重新打开弹出问题并选择另一个选项(共享,始终共享或永不共享,后一种情况是唯一一个调用错误回调的情况)之前。
当然,在这种情况下获得一个调用某些回调的选项会很不错。推荐的错误页面中的许多人都在要求它。
目前唯一的解决方法是使用超时。
答案 1 :(得分:1)
谢谢,我对此感到很疯狂。我还考虑过创建一个布尔变量来控制是否有回调。如果没有回调它仍然是“假的”所以我可以调用我的函数getLocationIp,也许我也可以使用setInterval来让用户有时间回答。