Chrome地理位置似乎忽略了maximumAge参数

Ric*_*ard 9 javascript html5 location google-chrome geolocation

我正在努力在HTML地理定位中使用maximumAge参数.它在Chrome中的工作方式似乎与规范不符.

我已经阅读了地理位置API规范,从我可以理解的情况来看,如果你将maximumAge设置为零,你应该总是得到一个新的位置.

maximumAge属性指示应用程序愿意接受其年龄不大于指定时间(以毫秒为单位)的缓存位置.如果maximumAge设置为0,则实现必须立即尝试获取新的位置对象.将maximumAge设置为Infinity必须确定返回缓存位置的实现,而不管其年龄如何.如果实现没有可用的缓存位置,其年龄不大于指定的maximumAge,则它必须获取新的位置对象.对于watchPosition(),maximumAge引用实现返回的第一个位置对象.

但是,这是我的代码:

function gpsSuccess(pos) {
   var positionDate = new Date(pos.timestamp);
   var currentDate = new Date();
   console.log(positionDate.toLocaleString(), currentDate.toLocaleString());
}
watchId = navigator.geolocation.watchPosition(gpsSuccess,
    gpsFail, {
        enableHighAccuracy: true,
        maximumAge: 0,
        timeout: 27000
});
Run Code Online (Sandbox Code Playgroud)

而且我看到以下内容:

Wed Nov 23 2011 10:25:43 GMT+0000 (GMT), Wed Nov 23 2011 10:52:16 GMT+0000 (GMT)
Run Code Online (Sandbox Code Playgroud)

所以这是获得的位置与当前时间之间的半小时差异.

我认为它可能只是卫星时间和当地时间之间的差异,但我一直在重复刷新,并且positionDate没有改变,即使currentDate是.

为什么重用相同的缓存位置,即使maximumAge设置为零?

这是Chrome,BTW.

Val*_*dge 0

这是不可能的。某些 html5 标签(例如 webkit 语音)也会发生同样的情况,您无法通过代码激活它们。抱歉,你对这件事没有太多控制权。