有没有办法检测移动设备是不是启用了 JavaScript 的定位服务?
Posted
技术标签:
【中文标题】有没有办法检测移动设备是不是启用了 JavaScript 的定位服务?【英文标题】:Is there a way to detect whether or not mobile device has location services enabled with JavaScript?有没有办法检测移动设备是否启用了 JavaScript 的定位服务? 【发布时间】:2011-09-30 20:04:55 【问题描述】:我目前正在使用 Modernizr 来检测特定设备是否支持地理定位。但是,如果支持地理定位,但用户已禁用其设备的定位服务,我想显示更具体的错误消息。
我收到投诉称地理定位无法在受支持的浏览器上运行,而实际上只是用户没有启用他们的浏览器。
我知道有办法使用原生移动代码来检测这种情况,但是有没有办法使用 javascript 来做到这一点? Modernizr 支持吗?
【问题讨论】:
【参考方案1】:你的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
【讨论】:
错误回调会触发。但是,它仅在设备不支持地理定位时触发,而不是在设备支持它但对该特定设备禁用时触发。我想知道这是否是 JavaScript 无法访问的东西? 我会调查的。谢谢!以上是关于有没有办法检测移动设备是不是启用了 JavaScript 的定位服务?的主要内容,如果未能解决你的问题,请参考以下文章
检测是不是使用移动设备(iOS/Android 手机/平板电脑)中的浏览器