有没有办法检测移动设备是不是启用了 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 手机/平板电脑)中的浏览器

检测移动设备的最佳方法是啥?

电脑找不到移动硬盘

有没有办法在不使用SNMP的情况下检测连接主机设备的软件版本或内核版本

检测用户是不是在域上启用了位置服务

移动检测[关闭]