我遇到了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的权限,但这次不要关闭浏览器。单击地理位置,等待然后允许,它可以工作。似乎第一次不起作用。