2

我在地理定位 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, timeout: 5000, enableHighAccuracy: true}

如果用户允许,地理定位将在第二次低谷下工作。只是第一次,如果他们按下允许按钮的时间过长,则不会触发回调。

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

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

编辑:

我只是在错误发生时隔离。设法让它在 jsfiddle 中发生。在 chrome 中转到您的设置,清除 jsfiddle 的位置权限。关闭浏览器并再次加载 jsfiddle。单击 getlocation 稍等片刻(不要认为这很重要),然后单击允许。什么都不会发生。

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

4

0 回答 0