我目前正在使用Modernizr来检测特定设备是否支持地理定位。但是,如果支持地理位置,我想显示更具体的错误消息,但是用户已禁用其设备的位置服务。
我抱怨地理定位不支持浏览器,实际上只是用户没有启用它们。
我知道有一些方法可以使用本机移动代码来检测这一点,但有没有办法用JavaScript执行此操作? Modernizr支持这个吗?
答案 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