有没有办法检测移动设备是否启用了JavaScript启用的位置服务?

时间:2011-09-30 20:04:55

标签: javascript mobile geolocation

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

我抱怨地理定位不支持浏览器,实际上只是用户没有启用它们。

我知道有一些方法可以使用本机移动代码来检测这一点,但有没有办法用JavaScript执行此操作? Modernizr支持这个吗?

1 个答案:

答案 0 :(得分:5)

你的error callback有没有开火?如果您没有,请尝试添加一个。如果它永远不会触发,您可以在函数上设置超时,如果它在一定时间内没有获得许可,则显示通知。

由于如果禁用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