Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法检测移动设备是否使用JavaScript启用了位置服务?_Javascript_Mobile_Geolocation - Fatal编程技术网

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

有没有办法检测移动设备是否使用JavaScript启用了位置服务?,javascript,mobile,geolocation,Javascript,Mobile,Geolocation,我目前正在使用Modernizer来检测特定设备是否支持地理定位。但是,如果支持地理定位,但用户已禁用其设备的定位服务,我希望显示更具体的错误消息 我一直在抱怨地理定位在受支持的浏览器上不起作用,而事实上只是用户没有启用他们的浏览器 我知道有一些方法可以使用本机移动代码检测到这一点,但有没有一种方法可以使用JavaScript实现这一点?Modernizer支持这一点吗?您的手机曾经开火吗?如果没有,请尝试添加一个。如果它从未触发,您可以在函数上设置一个超时,如果它在一定时间内没有收到显示通知的

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

我一直在抱怨地理定位在受支持的浏览器上不起作用,而事实上只是用户没有启用他们的浏览器

我知道有一些方法可以使用本机移动代码检测到这一点,但有没有一种方法可以使用JavaScript实现这一点?Modernizer支持这一点吗?

您的手机曾经开火吗?如果没有,请尝试添加一个。如果它从未触发,您可以在函数上设置一个超时,如果它在一定时间内没有收到显示通知的权限

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

事实上,您可以使用

错误回调确实会触发。但是,它仅在设备不支持地理定位时触发,而不是在设备支持地理定位但对该特定设备禁用地理定位时触发。我想知道这是否是JavaScript无法访问的内容?我将对此进行研究。谢谢