JavaScript能否检测移动设备是否启用了位置服务?

4

我目前使用Modernizr来检测特定设备是否支持地理位置信息。然而,如果用户已禁用其设备的位置服务,我想显示更具体的错误消息。

我收到的抱怨是,在支持的浏览器上地理位置信息无法使用,实际上是用户没有启用地理位置服务。

我知道有一些使用本机移动代码来检测这个问题的方法,但是是否有一种使用JavaScript来解决的方法?Modernizr是否支持这个功能?

1个回答

5

你的错误回调是否曾经触发过?如果没有,请尝试添加一个。如果它从未触发过,则可以在函数上设置超时,如果在一定时间内未收到权限,则显示通知。

由于如果禁用了geo,则errorCallback永远不会触发,因此请在该函数周围创建一个包装器,它将在另一个函数上创建一个settimeout。如果api的任何回调都触发了,则在其触发之前删除settimeout。

var timeOutId;
function disabledGeoHandler(){...}
function show_map() {
    clearTimeout(timOutId);
    ...
}
function show_map_error() {
    clearTimeout(timOutId);
    ...
}
function lookup_location() {
  timeOutId = setTimeout(disabledGeoHandler, 1000);
  navigator.geolocation.getCurrentPosition(show_map, show_map_error);
}

事实上,您可以只使用geo.js

错误回调确实会触发。但是它仅在设备不支持地理位置时触发,而不是当设备支持地理位置但对于该特定设备禁用时触发。我想知道这是否是 JavaScript 无法访问的内容? - Paul Erdos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接