我有一个检查GeoLocation API的代码段。如果它可用,我会尝试获得当前位置。但是根据浏览器的不同,代码的工作方式不同:
实际上我需要以一致的方式调用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& IE每次调用successCallback。只有FF吓坏了我,它会随机调用successCallback。
答案 0 :(得分:3)
你无能为力。您是浏览器开发人员的心血来潮,以及他们如何根据WiFi接入点指纹识别或IP查找来确定您的位置。
出于好奇,我在以下浏览器上测试了代码(http://jsfiddle.net/YbtSZ/2/),发现它的工作方式不一致。
Mac 10.7.2
XP原生
XP在Mac中运行虚拟化
答案 1 :(得分:0)
您可能想尝试Modernizr,它是一个JavaScript库,可以抽象出HTML5功能,从而获得一致的结果。查看文档以获取更多信息。