我在地理定位 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 的权限,但这次不要关闭浏览器。单击地理位置,等待然后允许,它可以工作。第一次好像不行。