地理位置功能错误不起作用

时间:2016-01-05 16:21:22

标签: javascript geolocation

我使用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
}

2 个答案:

答案 0 :(得分:1)

不幸的是,这是浏览器团队对 Firefox

的决定

Bug 675533 - Share location- "Not Now" Doesn't fire error callback

  

这是设计的。 Not Now隐藏弹出窗口但允许您稍后做出决定,因此它不会调用任何回调。永不共享将触发错误回调。

理由是,如果用户选择“不是现在”,则应将其解释为“我现在不想选择”,因此就好像他/她从不回答问题一样。

至少在他/她重新打开弹出问题并选择另一个选项(共享,始终共享或永不共享,后一种情况是唯一一个调用错误回调的情况)之前。

当然,在这种情况下获得一个调用某些回调的选项会很不错。推荐的错误页面中的许多人都在要求它。

目前唯一的解决方法是使用超时。

答案 1 :(得分:1)

谢谢,我对此感到很疯狂。我还考虑过创建一个布尔变量来控制是否有回调。如果没有回调它仍然是“假的”所以我可以调用我的函数getLocationIp,也许我也可以使用setInterval来让用户有时间回答。