HTML5地理位置API - 不调用任何回调
问题描述:
我有一个检查GeoLocation API的代码片段。如果可用,我试图获得当前位置。但是取决于浏览器,代码的工作方式不同:HTML5地理位置API - 不调用任何回调
-
在IE
- ,successCallback被称为每F5 refres
- 在FF,我得到successCallback或errorCallback与铬
- 错误代码= 2(POSITION_UNAVAILABLE)我得到successCallback或...什么也没有。我等待,没有任何东西
其实我需要以一致的方式调用successCallback ...是否有改变来实现它?
代码片段:
function successCallback(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
alert("Your location is: " + latitude + "," + longitude);
}
function errorCallback(error) {
console.log(error);
}
if (Modernizr.geolocation) {
navigator.geolocation.getCurrentPosition(successCallback, errorCallback, { maximumAge: 0 });
alert("geolocation is enabled");
} else {
alert("geolocation is NOT enabled");
}
快速注1:
alert("geolocation is enabled");
被称为每次。
快速注2:
设置:
maximumAge: 1
效果更好。现在Chrome每次都会调用successCallback Chrome &。只有FF吓到我了,它随机调用successCallback。
答
对此可以做的不多。你是浏览器开发人员的心血来潮,他们是如何尝试根据WiFi接入点指纹或IP查找来确定你的位置的。
出于好奇,我在以下浏览器上测试了代码(http://jsfiddle.net/YbtSZ/2/),发现它的工作不一致。
Mac 10.7。2
- Chrome的Mac上 - 工程
- FF 9 Mac上 - 工程
- Mac上的Safari - 不工作
XP本地
- FF 9在XP上 - 作品
- IE 8 on XP - 不起作用(地理位置不支持)
XP上运行的虚拟化在Mac
- 浏览器在XP(在Mac虚拟化) - 不起作用(POSITION暂不提供服务)
- FF 9在XP(虚拟化在Mac) - 不起作用(POSITION_UNAVAILABLE)
- IE 8在XP(虚拟化在Mac) - 不起作用(地理位置不支持)