2011-09-30 60 views
4

我目前使用Modernizr来检测是否支持特定设备的地理定位。但是,如果支持地理位置,但我想要显示更具体的错误消息,但用户已禁用其设备的位置服务。有没有办法来检测移动设备是否具有启用JavaScript的位置服务?

我收到投诉,称地理位置在支持的浏览器上无效,实际上只是用户未启用他们的浏览器。

我知道有些方法可以使用本地移动代码来检测这种情况,但是有没有办法用JavaScript来做到这一点? Modernizr支持这个吗?

回答

5

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

由于errorCallback在从未启用geo的情况下从未触发,因此要在将在另一个函数上创建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

+0

错误回调不火。但是,只有当设备不支持地理位置时才会触发,而不是在设备支持地理位置时触发,但是针对该特定设备禁用。我想知道这是否是JavaScript无法访问的东西? –

+0

我会研究这个。谢谢! –

相关问题