navigator.geolocation.getCurrentPosition用户允许在第一次尝试时不会触发成功或失败

时间:2013-10-15 23:38:21

标签: javascript html5

我遇到了geolocation api这个奇怪的问题。目前我注意到它在chrome中,但我认为它也发生在其他浏览器中。

问题是,当我第一次使用getCurrentPosition时,浏览器允许按钮出现。如果我只是等待一段延长的时间说30秒然后按下允许。触发失败回调没有成功。

以下是我正在使用的代码

if(navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(_position) {
        console.log("success"); 
        console.log(_position);
    }, 
    function(_error) { 
        console.log("failed"); 
        console.log(_error); 
    }, {timeout: 5000});
}else{
    console.log("not supported");
}

我也试过{maximumAge:60000,超时:5000,启用高度精确度:真}

如果用户允许,地理定位将第二次运行。只是第一次如果他们花费太长时间按下允许按钮就不会触发回调。

我认为可能是因为如果他们在超时时间内没有按下允许,则会发生此错误,但似乎并非如此。

当我自己尝试http://jsfiddle.net/CHEVs/时,它每次都有效。我能想到的是它无法找到回调。什么样的情况会导致这种情况发生?

编辑:

我刚刚在错误发生时隔离了。管理让它在jsfiddle中发生。转到chrome中的设置,清除jsfiddle的位置权限。关闭浏览器并再次加载jsfiddle。单击getlocation等待一段时间(不要认为重要的是多长时间)然后单击“允许”。什么都不会发生。

现在返回并删除jsfiddle的权限,但这次不要关闭浏览器。单击地理位置,等待然后允许,它可以工作。似乎第一次不起作用。

0 个答案:

没有答案